题目描述
平衡二叉树
输入一棵二叉树,判断该二叉树是否是平衡二叉树
源码
class Solution {
public:
int TreeDepth(TreeNode* pRoot)
{
if(pRoot==NULL) return 0;
int LeftDepth = TreeDepth(pRoot->left);
int RightDepth = TreeDepth(pRoot->right);
int depth = (LeftDepth<RightDepth?RightDepth:LeftDepth)+1;
return depth;
}
int abs(int x)
{
return x>0?x:-x;
}
bool IsBalanced_Solution(TreeNode* pRoot) {
//它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树
if(pRoot == NULL) return true;
return IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right)&& abs(TreeDepth(pRoot->left)-TreeDepth(pRoot->right))<=1;
}
};