题解 | #判断是不是平衡二叉树#
判断是不是平衡二叉树
https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222
class Solution {
private:
int calDepth(TreeNode* root){
if(root == nullptr) return 0;
int ld = calDepth(root->left);
int rd = calDepth(root->right);
int depth = (ld > rd) ? ld+1 : rd+1;
return depth;
}
bool Helper(TreeNode* pRoot){
if(pRoot == nullptr) return true;
if(pRoot->left == nullptr && pRoot->right == nullptr){
return true;
}
else{
int leftDepth = calDepth(pRoot->left);
int rightDepth = calDepth(pRoot->right);
if(leftDepth - rightDepth <= 1 &&
leftDepth - rightDepth >= -1){
return Helper(pRoot->left) && Helper(pRoot->right);
}
}
return false;
}
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot == nullptr) return true;
return Helper(pRoot);
}
};

查看23道真题和解析