思想:
每一节点的左支和右支的深度和不能超过1;
每一节点(作为它父节点的左支或右支)都有一个深度值要返回,以便在其父节点进行平衡判断;
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool isBalanced(TreeNode *root) {
if(balancedHeight(root) >= 0) return true;
else return false;
}
int balancedHeight(TreeNode *root) {
if(root == NULL) return true;
int left = balancedHeight(root->left);
int right = balancedHeight(root->right);
if(left < 0 || right < 0 || abs(left-right) > 1)
return -1;
return max(left,right)+1;
}
};
本文介绍了一种用于判断二叉树是否为平衡二叉树的递归算法。该算法通过计算每个节点左右子树的最大深度,并确保其差值不超过1来实现平衡性的判断。
941

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



