我想找到二叉搜索树的最大深度我找到一个密码。
int maxDepth(struct node* node) {
if (node==NULL) {
return(0);
}
else {
// compute the depth of each subtree
int lDepth = maxDepth(node->left);
int rDepth = maxDepth(node->right);
// use the larger one
if (lDepth > rDepth) return(lDepth+1);
else return(rDepth+1);
}
}
我想知道为什么node->left会返回1?
是默认的吗代码很简单,但我不知道答案从哪里来,有人能解释一下吗?
最佳答案
给定此树:
[甲]
/ \
[乙][丙]
maxdepth将为空的[b]调用,为空的[c]调用,两者都返回零,因此递归调用最终返回0+1。
如果在[c]下有一个节点[d],那么对[d]maxdepth的调用将返回null,而d将返回0+1,那么递归将继续放大,[c]将接收0+1,并将返回一些+1,返回的maxdepth为2,该值大于包含[b]的分支的深度,该分支的深度为1,因此从完全递归返回maxdepth为2。