所以我需要在c ++中编写一个返回树深度的函数。我有点想知道这会带来什么。它是每个单独节点的深度,或者它是整个树的深度,例如树有4个级别。任何帮助将不胜感激
答案 0 :(得分: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);
};
答案 1 :(得分: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;
};