平衡树

二叉树的深度

http://www.nowcoder.com/questionTerminal/435fb86331474282a3499955f0a41e8b

public class Solution {
        boolean flag = true;

    public boolean IsBalanced_Solution(TreeNode root) {

        Tree(root);
        return flag;

    }
//遍历比较左右树是否平衡
    public void Tree(TreeNode root) {
        if (root == null) {
            return;
        }
        if (Math.abs(TreeDepth(root.left) - TreeDepth(root.right)) > 1) {
            flag = false;
        }
        Tree(root.left);
        Tree(root.right);

    }
//树深
    public int TreeDepth(TreeNode root) {
        if (root == null) {
            return 0;
        } else {
            return 1

Math.max(TreeDepth(root.left), TreeDepth(root.right));
        }
    }
}

根据定义来做最好理解,也好写些,是否平衡就是比较所有左右树深度差的绝对值是否小于等于1,不是就不是平衡树,然后就两个一个遍历一个树的深度结合过一遍就行。直译定义来写就可以,不然按自己思路写会容易忘记解法。

全部评论

相关推荐

哥_留个offer先:跟他说,你这个最好用c#,微软就用c#Java不适合这个项目
点赞 评论 收藏
分享
05-12 16:04
已编辑
江西财经大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务