这题采用DFS,自底向上查看,如果底下的树不平衡则会返回-1,因此我们也不用在继续递归。
注意我们是先从左边开始,如果左边都不平衡那么就直接return -1了,也就不在递归右边了。
题解作者:Xiaohu9527
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
class Solution {
public:
bool isBalanced(TreeNode* root) {
return high(root)>=0;
}
int high(TreeNode *T){
if(T==NULL) return 0;
int left = high(T->left);
int right = high(T->right);
if(left>=0&&right>=0&&abs(right-left)<=1){
return max(right,left)+1;
}
else return -1;
}
};
这题还是没理解透,还得再看看。
原文:https://www.cnblogs.com/lzyrookie/p/14640593.html