Java求二叉树的深度超时问题

今天在leetcode刷一道简单题,求二叉树的深度,链接如下:
剑指 Offer 25. 合并两个排序的链表

首先我很容易就想到了二叉树的深度遍历,用递归来实现,我的代码是这样:

class TreeNode {
      int val;
    TreeNode left;
    TreeNode right;
    TreeNode(int x) { val = x; }
}

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

在leetcode提交,运行一个非常大的测试用例时报错了,提示超出时间限制。
于是我查看了参考答案,参考答案将三目运算符改成了使用Math.max()函数,结果通过了,参考答案的函数部分代码如下:

 if(root == null) return 0;
        return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;

由此我分析,可能三目运算符在Java中需要消耗更多的运算量,因此以后刷题碰到需要比大小的时候,尽量还是选择用Math包中的max和min函数比较好,可以节省很多的运算时间,避免超时。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容