Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as:
a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
判断一棵树是否是平衡二叉树。
判断左子树和右子树的深度差值是否小于等于1即可,递归。
再写一个函数计算一棵树的深度,仍然用递归。
class Solution {
public:
bool isBalanced(TreeNode* root) {
if(!root) return true;
int distance = getDeep(root->left) - getDeep(root->right);
if(distance < -1 || distance > 1) return false;
else return isBalanced(root->left) && isBalanced(root->right);
}
int getDeep(TreeNode* root){
if(!root) return 0;
return 1+max(getDeep(root->left), getDeep(root->right));
}
};