【发布时间】:2012-10-12 12:22:04
【问题描述】:
我无法理解这个 maxDepth 代码。任何帮助,将不胜感激。这是我遵循的 sn-p 示例。
int maxDepth(Node *&temp)
{
if(temp == NULL)
return 0;
else
{
int lchild = maxDepth(temp->left);
int rchild = maxDepth(temp->right);
if(lchild <= rchild)
return rchild+1;
else
return lchild+1;
}
}
基本上,我的理解是该函数递归调用自身(对于每个左右情况),直到它到达最后一个节点。一旦完成,它会返回 0,然后执行 0+1。那么前一个节点是1+1。那么下一个是2+1。如果 bst 有 3 个左孩子, int lchild 将返回 3。额外的 + 1 是根。所以我的问题是,所有这些 +1 来自哪里。它在最后一个节点返回 0 但为什么它在左/右子节点上升时返回 0+1 等?我不明白为什么。我知道它可以,但为什么呢?
【问题讨论】:
-
呃,因为如果有一个新节点,那么深度可能是前一个加一?
标签: c++ binary-tree