题目
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
分析
平衡二叉树 定义,左右深度差不超过1.直接根据定义, 求出左子树深度,右子树深度,再判断是否深度差不超过1.
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if(!pRoot)
return true;
int leftDepth = GetDepth(pRoot->left);
int rightDepth = GetDepth(pRoot->right);
if(leftDepth+1<rightDepth || rightDepth +1 < leftDepth)
return false;
return true;
}
int GetDepth(TreeNode * pRoot)
{
if(!pRoot)
{
return 0;
}
int leftD = GetDepth(pRoot->left);
int rightD = GetDepth(pRoot->right);
return leftD>rightD?leftD+1:rightD+1;
}
};