题解 | #判断是不是平衡二叉树#

判断是不是平衡二叉树

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

W:
判断需要先求出当前节点的高度,1+max(left,right),后序处理返回的值,判断高度是否相差大于1
采用-1标记,提前返回
N
空树为平衡二叉树
全局变量用于查看返回值是否相差大于1

class Solution {
public:
    bool res=true;
    int traversal(TreeNode* le){

        if(!le){
            return 0;
        }
        int left=traversal(le->left);
        if(left==-1) return -1;//提前返回
        int right=traversal(le->right);
        if(right==-1) return -1;
        if(abs(left-right)>1){ 
            res=false;
            return -1;//-1标记,表示已经不是平衡树了
        }
        return 1+max(left,right);
    }
    bool IsBalanced_Solution(TreeNode* pRoot) {
        if(pRoot==nullptr){
            return true;
        }
        traversal(pRoot);
        return res;
    }
};
全部评论

相关推荐

喜欢喜欢喜欢:这是我见过最长最臭的简历
点赞 评论 收藏
分享
只有一个苍穹外卖外加正在看黑马点评,可以找小厂实习吗,还有我的简历有什么大问题吗
Java抽象小篮子:感觉有点熟悉,问题1是学历,2是没实习经历,3是专业技能写得太少太少了(怎么写可以看我置顶帖),4是仅这一个项目找实习不够看。拷打完毕,简历怎么写可以看我置顶帖子
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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