LintCode之93 平衡二叉树

题目来源:平衡二叉树
题目描述:
给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。
样例
给出二叉树 A={3,9,20,#,#,15,7}, B={3,#,20,15,7}
         A) 3            B) 3
             / \                 \
            9 20               20
           / \                   / \
         15 7                 15 7
二叉树A是高度平衡的二叉树,但是B不是。
Java代码:

public class Solution {
    /**
     * @param root: The root of binary tree.
     * @return: True if this Binary tree is Balanced, or false.
     */
     ArrayList<Integer> depth = new ArrayList<Integer>();
    public boolean isBalanced(TreeNode root) {
        // write your code here
        int result = IsBalanceBinaryTree(root);
        if(result>=0)
            return true;
        return false;
    }
    int IsBalanceBinaryTree(TreeNode root)
        {
            if (null == root)
            {
                return 0;
            }
            int left = IsBalanceBinaryTree(root.left);
            int right = IsBalanceBinaryTree(root.right);
            if (left >= 0 && right >= 0)
            {// 左右子树都是平衡二叉树
                if (left - right <= 1 && left - right >= -1)
                {// 左右子树高度差的绝对值小于等于1
                    return left >= right ? (left + 1) : (right + 1);
                }
            }
            return -1;
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值