java-平衡二叉树

平衡二叉树

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

题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
示例1
输入
{1,2,3,4,5,6,7}
返回值
true

解题思路:
在求树高度的基础上,直接按要求进行判断
判断为空,则为平衡二叉树
判断左子树是否是
判断右子树是否是
判断高度差是否满足
都满足则返回树高度

java代码

import java.util.*;
public class Solution {
    //如果以root为根节点的树是平衡二叉树则返回树的高度,否则返回-1;
    public int depth(TreeNode root){
        if(root==null) return 0;//如果是空树,则直接返回0,表示是平衡二叉树
        int ldep=depth(root.left);
        if(ldep==-1) return -1;//如果左子树不是,则直接返回不是
        int rdep=depth(root.right);
        if(rdep==-1) return -1;//如果右子树不是,则直接返回不是
        int sub=Math.abs(ldep-rdep);
        if(sub > 1) return -1;//如果高度差大于1,则直接返回不是
        return Math.max(ldep,rdep)+1;//否则返回树的高度
    }
    public boolean IsBalanced_Solution(TreeNode root) {
        return depth(root) != -1;//直接看返回结果是不是-1;
    }
}
全部评论

相关推荐

用微笑面对困难:不是你千万别小看这家公司,他们的预估市值成倍上涨,三次在报告看见这个公司了,总之如果是给股权的话可以试试,未来没准真能发家致富哈哈哈哈
点赞 评论 收藏
分享
08-11 16:33
门头沟学院 Java
码农索隆:很好,你很棒,但是.... 我举报了!!!
字节跳动开奖374人在聊
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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