【题目】
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
【代码】
递归:
class Solution {
public:
int depth(TreeNode *pRoot)//求深度
{
int dep=0;
if(pRoot==NULL)return dep;
int lefts=depth(pRoot->left);
int rights=depth(pRoot->right);
return lefts>rights?lefts+1:rights+1;//这里需要注意的是:返回树的深度是左右子树的最深+1,+1,+1, 重要的事情说三遍
}
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot==NULL)return 1;
int dep_l= depth(pRoot->left);
int dep_r= depth(pRoot->right);
if(dep_l-dep_r>1||dep_l-dep_r<-1)return 0;
return IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right);
}
};