题目描述

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

解题思路

求解二叉树的高度,比较就知道了

package JianzhiOffer;

public class Sloution37 {
    public boolean IsBalanced_Solution(TreeNode root) {
        if (root == null) {
            return true;
        }
        /**
         * 高度差正确就继续求解,这里写的不好~求解高度没有利用保存起来
         */
        if (Math.abs(getLength(root.left) - getLength(root.right)) == 0
                | Math.abs(getLength(root.left) - getLength(root.right)) == 1) {
            return IsBalanced_Solution(root.left)
                    && IsBalanced_Solution(root.right);
        } else {
            return false;
        }
    }

    int getLength(TreeNode root) {
        if (root == null) {
            return 0;
        }
        int leftCount = getLength(root.left);
        int rightCOunt = getLength(root.right);
        return rightCOunt > leftCount ? rightCOunt + 1 : leftCount + 1;
    }

}