美文网首页
LeetCode 每日一题 [70] 平衡二叉树

LeetCode 每日一题 [70] 平衡二叉树

作者: 是小猪童鞋啦 | 来源:发表于2020-09-25 08:28 被阅读0次
    LeetCode 平衡二叉树[简单]

    输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof

    示例 1:

    给定二叉树 [3,9,20,null,null,15,7]
    3
    / \
    9 20
    / \
    15 7
    返回 true 。

    示例 2:

    给定二叉树 [1,2,2,3,3,null,null,4,4]
    1
    / \
    2 2
    / \
    3 3
    / \
    4 4
    返回 false 。

    限制:

    1 <= 树的结点个数 <= 10000

    题目分析
    解法1

    后序遍历+剪枝(从低至顶)具体参见LeetCode 解法 我留下了没有技术的泪水 https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof/solution/mian-shi-ti-55-ii-ping-heng-er-cha-shu-cong-di-zhi/

    代码实现
    public class TreeNodeIsBalanced {
    
        public boolean isBalanced(TreeNode root) {
            return recur(root) != -1;
        }
    
        private int recur(TreeNode root) {
            if (root == null) {
                return 0;
            }
            int left = recur(root.left);
            if (left == -1) {
                return -1;
            }
            int right = recur(root.right);
            if (right == -1) {
                return -1;
            }
            return Math.abs(left - right) < 2 ? Math.max(left, right) + 1 : -1;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:LeetCode 每日一题 [70] 平衡二叉树

          本文链接:https://www.haomeiwen.com/subject/hffkzhtx.html