110. 平衡二叉树

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

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

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/balanced-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


class Solution {

    private Helper solve(TreeNode root) {
        if (root == null) {
            return new Helper(true, 0);
        }

        Helper left = solve(root.left);
        Helper right = solve(root.right);

        return new Helper(left.isBalanced && right.isBalanced && Math.abs(left.height - right.height) <= 1,
                Math.max(left.height, right.height) + 1);

    }


    public boolean isBalanced(TreeNode root) {
        if (root == null) {
            return true;
        }

        return solve(root).isBalanced;
    }
}

class Helper {
    boolean isBalanced;
    int height;

    public Helper(boolean isBalanced, int height) {
        this.isBalanced = isBalanced;
        this.height = height;
    }
}

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

    TreeNode() {
    }

    TreeNode(int val) {
        this.val = val;
    }

    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}
posted @ 2021-12-07 10:45  Tianyiya  阅读(28)  评论(0)    收藏  举报