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

判断是不是平衡二叉树

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;
    }
};
全部评论

相关推荐

点赞 收藏 评论
分享
正在热议
牛客网
牛客企业服务