java - 二叉树的最大深度

标签 java recursion tree

public class Solution {
    public int maxDepth(TreeNode root) {
        if(root==null) return 0;
        else
        return (maxDepth(root.left)>maxDepth(root.right))?(maxDepth(root.left)+1):(maxDepth(root.right)+1);
    }
}

它返回超出时间限制。我想知道为什么会发生这种情况,我的代码有什么问题吗?

最佳答案

你们真的很接近。我认为您的目标是:

int maxHeight(TreeNode p) {
  if (p == null) return 0;
  int leftHeight = maxHeight(p.left);
  int rightHeight = maxHeight(p.right);
  return (leftHeight > rightHeight) ? leftHeight + 1 : rightHeight + 1;
}

我认为您超过时间限制的原因是因为您的递归调用比您需要的要多得多。为了解决这个问题,你只需要计算左子树的大小,右子树的大小,并返回两个值中较大的一个+1(对于根)。

关于java - 二叉树的最大深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324714/

相关文章:

reactjs - 如何为嵌套子菜单创建键?

algorithm - 了解通用深度优先树搜索的维基百科代码?

php - 生成具有完整路径 (URLS) 和数据库值的嵌套树

java - Looper/Handler 与 Executor

java - 来自已排序数组的 BST 列表

java - 寻找最大公共(public)子序列

c++ - 重载可变长度模板函数的递归结束

java - 使用分段上传将文件放入 Amazon S3

compression - 什么是压缩/解压缩文件的好 Java 库?

java - 树-路径总和