题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
解题思路
1、空树为平衡二叉树
2、二叉树左右子树的高度差绝对值不超过1为平衡二叉树,该树的左右子树也满足这个条件,即递归问题。
代码实现
class Solution {
public:
int GetTreeLength(TreeNode* pRoot) // 求二叉树的高度
{
if(pRoot == NULL)
return 0;
int leftLen = GetTreeLength(pRoot->left);
int rightLen = GetTreeLength(pRoot->right);
return max(leftLen, rightLen) + 1;
}
bool IsBalanced_Solution(TreeNode* pRoot) {
if(pRoot == NULL)
return true;
if(abs(GetTreeLength(pRoot->left) - GetTreeLength(pRoot->right)) > 1)
return false;
bool leftBal = true, rightBal = true;
leftBal = IsBalanced_Solution(pRoot->left);
rightBal = IsBalanced_Solution(pRoot->right);
return leftBal && rightBal;
}
};
本文介绍了一种算法,用于判断一棵二叉树是否为平衡二叉树。平衡二叉树定义为:任意节点的左右子树高度差不超过1。通过递归方式,先计算树的高度,再判断每个节点是否满足平衡条件。
968

被折叠的 条评论
为什么被折叠?



