平衡二叉树:它是一棵空树或者他的所有节点的左右子树高度差小于等于1。
解题思路:如果是空树,那么他就是平衡二叉树。如果不是空树,则判断他的左子树是否为平衡二叉树,然后判断右子树是否为平衡二叉树,然后在判断自己是不是平衡二叉树。(主要就是判断高度差)
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot==nullptr)//:若为空则为平衡二叉树
{return true;}
if(IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right)&&abs(height(pRoot->left)-height(pRoot->right))<=1)
{
return true;
}
else
return false;
}
public:
int height(TreeNode* pRoot)
{
if(pRoot==nullptr)
{
return 0;
}
return height(pRoot->left)>height(pRoot->right)?height(pRoot->left)+1:height(pRoot->right)+1;//:返回最大的高度
}
};