题目:
输入一颗二叉树根节点,判断是否为平衡二叉树。
平衡二叉树:首先平衡二叉树是一颗二叉排序树。再就是每一个非叶子节点的左右子树的高度差<=1;
即左右子树也为平衡二叉树。
解法:
类似题目35.求左右子树的高度。在返回高度的过程中,利用一个变量记录左右子树的高度差的情况。
代码如下:
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot==NULL)
return true;
bool res=true;
int deep = get_deep(pRoot,res);
return res;
}
int get_deep(TreeNode* pRoot,bool& res)
{
if(pRoot ==NULL)
return 0;
int left = get_deep(pRoot->left,res);
int right = get_deep(pRoot->right,res);
if(abs(left-right)>1 ) //判断高度情况。
res = false;
return max(left,right)+1;
}