Loading

剑指offer[39]——平衡二叉树

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

该题目的思路也是一个遍历,二叉树深度从最底部开始计算,从叶子节点向上查询是否每个节点都满足平衡二叉树的要求,满足的话返回当前子树的高度,不满足的话直接返回-1.

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function IsBalanced_Solution(pRoot)
{
    if(!pRoot){return true;}
    function depth(root){
        if(!root){return 0;}
        let left = depth(root.left);
        if(left==-1){return -1;}
        let right = depth(root.right);
        if(right==-1){return -1;}
        if(left-right>1 || left-right<-1){
            return -1;
        }else{
            return 1+(right>left?right:left);
        }
    }
    return depth(pRoot)!=-1;
}
posted @ 2020-03-27 11:40  Jacob是我了  阅读(61)  评论(0编辑  收藏