LeetCode 110 判断一棵树是一颗平衡二叉树(Java)

90 阅读1分钟
给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
class Solution {
    public boolean isBalanced(TreeNode root) {
        if(root == null){
            return true;
        }
        int leftLength = getDeep(root.left);
        int rightLength = getDeep(root.right);
        int a = Math.abs(leftLength-rightLength);
        if(a<=1){
            // 绝对值不超过1,说明当前节点为根的树暂时是平衡二叉树,继续看其他的节点
            return isBalanced(root.left)&&isBalanced(root.right);
        }
        return false;
    }

    // 获取树的高度
    public int getDeep(TreeNode root){
        if(root == null){
            return 0;
        }
        int leftDept = getDeep(root.left);
        int rightDept = getDeep(root.right);
        return Math.max(leftDept,rightDept)+1;
    }
}

image.png