1

所以我需要用 C++ 编写一个函数来返回树的深度。我有点困惑这意味着什么。它是每个单独节点的深度还是整个树的深度,例如树有 4 个级别。任何帮助,将不胜感激

4

2 回答 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 回答