我想找到二叉搜索树的最大深度我找到一个密码。

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。

10-08 04:09