所以我需要用 C++ 编写一个函数来返回树的深度。我有点困惑这意味着什么。它是每个单独节点的深度还是整个树的深度,例如树有 4 个级别。任何帮助,将不胜感激
问问题
2963 次
2 回答
0
树的深度是最深节点的级别。这看起来是一个很好的定义。话虽如此,这是 C++ 类中的一个实现,其中 root 是该类的一个属性。基本上,你得到左子树的深度和右子树的深度,然后选择这两者中最大的一个。
#define max(a,b) ((a)>=(b) ? (a) : (b))
int height2(Node *t) {
if(!t)
return 0;
int height_left = height2(t->L);
int height_right = height2(t->R);
return 1 + max(height_left,height_right);
};
int height() {
return height2(root);
};
于 2013-03-13T22:40:18.530 回答
0
class Node {
public:
//...
unsigned int depth() {
return 1 + max(depth(left),
depth(right));
}
private:
unsigned int depth(Node* node) {
return node ? node->depth() : 0;
}
Node* left;
Node* right;
};
于 2013-03-13T23:19:50.730 回答