剑指 Offer 55 - II. 平衡二叉树

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

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

class Solution {

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

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

        boolean ok = left.ok && right.ok && Math.abs(left.deep - right.deep) <= 1;
        int deep = Math.max(left.deep, right.deep) + 1;


        return new Info(ok, deep);
    }

    public boolean isBalanced(TreeNode root) {
        return solve(root).ok;
    }
}

class Info {
    boolean ok;
    int deep;

    public Info(boolean ok, int deep) {
        this.ok = ok;
        this.deep = deep;
    }
}


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

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

posted @ 2022-01-20 11:29  Tianyiya  阅读(24)  评论(0)    收藏  举报