LeetCode 110. 平衡二叉树(Balanced Binary Tree) 15

110. 平衡二叉树
110. Balanced Binary Tree

题目描述
给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。

每日一算法2019/5/18Day 15LeetCode110. Balanced Binary Tree

示例 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。

Java 实现

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
        val = x;
    }
}

public class Solotion {
    public boolean isBalanced(TreeNode root) {
        if (root == null) {
            return true;
        }
        return Math.abs(depth(root.left) - depth(root.right)) <= 1 && isBalanced(root.left) && isBalanced(root.right);
    }

    public int depth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        return Math.max(depth(root.left), depth(root.right)) + 1;
    }
}

相似题目

参考资料

原文地址:https://www.cnblogs.com/hgnulb/p/10886059.html