题目:输入一棵二叉树的根结点,判断该树是否是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
思路:先求出树的高度,然后根据高度差判断是否为平衡二叉树。
在线oj:
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if (pRoot == NULL)
return true;
int hL = Height(pRoot->left);
int hR = Height(pRoot->right);
int ret = hL - hR;
if (ret >1 || ret <-1)
return false;
return IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right);
}
int Height(TreeNode*& pRoot)
{
if (pRoot == NULL)
return 0;
else if (pRoot->left == NULL && pRoot->right == NULL)
return 1;
else
return (Height(pRoot->left) > Height(pRoot->right)) ? (Height(pRoot->left) + 1) : (Height(pRoot->right) + 1);
}
};