剑指offer — 平衡二叉树

来源:互联网 发布:u盘中毒数据恢复 编辑:程序博客网 时间:2024/06/05 09:59

输入一棵二叉树,判断该二叉树是否是平衡二叉树

java

class Tree {    boolean isBalance;    int deep;    public Tree(boolean isBalance, int deep) {        this.isBalance = isBalance;        this.deep = deep;    }}public class Solution {    public boolean IsBalanced_Solution(TreeNode root) {        if (root == null) {            return true;        }        if (root.left == null && root.right == null) {            return true;        }        return isBal(root).isBalance;    }    private Tree isBal(TreeNode root) {        if (root == null) {            return new Tree(true, 0);        }        if (root.left == null && root.right == null) {            return new Tree(true, 1);        }        Tree left = isBal(root.left);        Tree right = isBal(root.right);        if (!left.isBalance || !right.isBalance) {            return new Tree(false, -1);        }        if (Math.abs(left.deep - right.deep) > 1) {            return new Tree(false, -1);        }        return new Tree(true, Math.max(left.deep, right.deep) + 1);    }}