平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
A:
class Solution {
public:
int TreeDepth(TreeNode* pRoot) //求二叉树的深度
{
if (pRoot == NULL) {
return 0;
}
return max(TreeDepth(pRoot->left) + 1,TreeDepth(pRoot->right) + 1);
}
bool IsBalanced_Solution(TreeNode* pRoot) {
if (pRoot == NULL) {
return true; //空树为平衡二叉树
}
if (fabs( TreeDepth(pRoot->left) - TreeDepth(pRoot->right) ) > 1) {
return false; /左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。若子树为空,深度返回0,0为空树也平衡
} else {
return IsBalanced_Solution(pRoot->left)
&& IsBalanced_Solution(pRoot->left);
}
}
};