题解 | #判断是不是平衡二叉树#
判断是不是平衡二叉树
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;
}
};


