题解 | #判断是不是平衡二叉树# 递归 + 状态记录

判断是不是平衡二叉树

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

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param pRoot TreeNode类 
     * @return bool布尔型
     */
    public boolean IsBalanced_Solution (TreeNode pRoot) {
        if(pRoot == null) return true;
        int lDepth = getDepth(pRoot.left);
        int rDepth = getDepth(pRoot.right);
        if(lDepth == -1 || rDepth == -1) return false;
        if(Math.abs(lDepth - rDepth) > 1) return false;
        return true;
    }

    public int getDepth(TreeNode root){
        if(root == null) return 0;
        int lDepth = getDepth(root.left);
        int rDepth = getDepth(root.right);
        // 不平衡条件
        if(Math.abs(lDepth - rDepth) > 1) return -1;
        if(lDepth == -1 || rDepth == -1) return -1;
        return 1 + Math.max(lDepth,rDepth);
    }





}

在任意一个子树发生不平衡,则整个平衡树即不成立,计算深度不平衡,则一直向最上层递归传递 -1

全部评论

相关推荐

码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:46
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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