我无法理解这个 maxDepth 代码。任何帮助,将不胜感激。这是我遵循的片段示例。
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。如果有一个有 3 个左孩子的 bst,int lchild 将返回 3。额外的 + 1 是根。所以我的问题是,所有这些 +1 是从哪里来的。它在最后一个节点返回 0 但为什么它在左/右子节点上升时返回 0+1 等?我不明白为什么。我知道它会这样做,但为什么呢?