题解 | #平衡二叉树#

平衡二叉树

http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222

算法步骤

1. 判断当前节点是否满足平衡的要求(左右子树高度差不超过1)

2. 满足1并不能保证其左右子树是平衡二叉树,因此需要递归判断 左子树是否平衡,右子树是否平衡

3. 若当前节点及其左右子树都满足平衡的要求,则整个树是平衡二叉树,否则不是平衡二叉树

public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        return dfs(root);
    }

    //深度优先搜索 判断node树是否我平衡二叉树
    private boolean dfs(TreeNode node)
    {
        if(node==null)
        {
            return true;
        }
        //判断node是否平衡
        boolean IsBalanced=false;
        if(Math.abs(height(node.left)-height(node.right))<=1)
            IsBalanced = true;
        else
            IsBalanced = false;

        //递归判断左子树是否平衡
         boolean l= dfs(node.left);
        //递归判断右子树是否平衡
         boolean r= dfs(node.right);
         return IsBalanced && l && r;
    }

    //计算树的高度
    private int height(TreeNode node)
    {
        if(node==null)
            return 0;
        if(node.left==null && node.right==null)
            return 1;
        int l = height(node.left);
        int r = height(node.right);
        return Math.max(l,r)+1;
    }
}
全部评论

相关推荐

05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务