关于leetcode 110

来源:7-2 一个简单的二叉树问题引发的血案 Invert Binary Tree

IT_god

2020-10-15

class Solution {
    public boolean isBalanced(TreeNode root) {
        return height(root) >= 0;
    }

    public int height(TreeNode root) {
        if (root == null) {
            return 0;
        }
        int leftHeight = height(root.left);
        int rightHeight = height(root.right);
        if (leftHeight == -1 || rightHeight == -1 || Math.abs(leftHeight - rightHeight) > 1) {
            return -1;
        } else {
            return Math.max(leftHeight, rightHeight) + 1;
        }
    }

}




//代码二
class Solution {
    public boolean isBalanced(TreeNode root) {
        return height(root) >= 0;
    }
    private int height(TreeNode root){
        if(root == null) return 0;
        int left = height(root.left);
        int right = height(root.right);
        return (left == -1 || right == -1 || Math.abs(height(root.left) - height(root.right)) > 1) ? -1 : Math.max(left, right) + 1;
    }
}

老师,
代码一 提交给Leetcode运行时间1Ms. 代码二 的则是26Ms.

为什么会有这种现象出现呀? 我找不出有啥不同呢。

写回答

1回答

liuyubobobo

2020-10-15

这是 lc 评测环境的问题,这种代码的性能结果差异不是稳定的,在不同环境下不具有可复现性。我不建议在这种同样的逻辑不同的语句实现上细抠,意义不大。


继续加油!:)

0
1
IT_god
非常感谢!
2020-10-15
共1条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程