题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。
 
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
 
 
 
题目链接:
 
关键点:
遍历结束条件:1、叶子节点   2、已判定不是平衡二叉树
 
 
public class Solution {
    private boolean flag = true;
    public boolean IsBalanced_Solution(TreeNode root) {
        judge(root);
        return flag;
    }
    
    public int judge(TreeNode cur){
        //结束条件:节点为null 或者 已判定不是平衡二叉树
        if(null == cur || flag == false){
            return 0;
        }
        //左右子树的高度
        int leftDepth = judge(cur.left);
        int rightDepth = judge(cur.right);
        int dis = leftDepth - rightDepth;
        //节点高度差大于1说明不是平衡二叉树
        if(dis < -1|| dis > 1){
            flag = false;
            return 0;
        }
        //返回时加上当前节点的高度
        return leftDepth>rightDepth?leftDepth+1:rightDepth+1;
    }
}

 

 

posted on 2020-06-09 03:35  MoonBeautiful  阅读(205)  评论(0编辑  收藏  举报