题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
class Solution {
public:
bool IsBalanced_Solution(TreeNode* root) {
return myBalanced(root);
}
bool myBalanced(TreeNode * root)
{
if(root == NULL)
return true;
else if(root->left == NULL && root->right == NULL)
return true;
int zuo = depth(root->left);
int you = depth(root->right);
bool ret1 = (abs(zuo-you) <= 1) ? true : false;
bool ret2 = myBalanced(root->left);
bool ret3 = myBalanced(root->right);
return ret1&&ret2&&ret3;
}
int depth(TreeNode * root)
{
if(root == NULL)
return 0;
else if(root->left == NULL && root->right == NULL)
return 1;
int zuo = depth(root->left);
int you = depth(root->right);
int ret = zuo > you ? zuo : you;
return ret + 1;
}
};