思路:就是查看左右子树的高度是差是否超过1,由于求树的高度也是一个递归过程,所以可以将高度值作为一个中间结果作为判断,高度为-1,表示不是平衡二叉树。
code:
class Solution {
public:
int solve(TreeNode *root){
if(root == NULL)
return 0;
if(root->left == NULL && root->right == NULL)
return 1;
int leftHeigh = solve(root->left);
if(leftHeigh < 0)
return -1;
int rightHeigh = solve(root->right);
if(rightHeigh < 0)
return -1;
if(abs(leftHeigh - rightHeigh) > 1)
return -1;
return max(leftHeigh,rightHeigh) + 1;
}
bool isBalanced(TreeNode *root) {
int ret = solve(root);
return ret == -1 ? false : true;
}
};
本文详细阐述了如何通过递归方法判断一个二叉树是否为平衡二叉树,并提供了一个C++代码实现。重点在于理解平衡二叉树的定义及其实现逻辑。
150

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



