时间限制:1秒 空间限制:32768K 热度指数:184333
题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
这一道题目如果直接判断每一个左右子数是否是平衡二叉树,会涉及到很多重复计算,正确的做法是在DFS中剪纸,一次遍历即可。
class Solution {
public:
bool res=true;
int helper(TreeNode* root){
if(root==nullptr) return 0;
int left = helper(root->left);
int right = helper(root->right);
if(abs(left-right)>1){
res = false;
return -1;
}
return max(left,right)+1;
}
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot==nullptr) return true;
helper(pRoot);
return res;
}
};