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,那么该二叉树就是平衡二叉树。所以我们要写一个判断树高的方法,递归的做法如下:
/*
struct TreeNode{
TreeNode *left;
TreeNode *right;
int val;
}
*/
class Solution{
public:
bool isBalanced(TreeNode *root){
if(!root)
return true;
if(abs(getHeight(root->left)-getHeight(root->right)) > 1)
return false;
return isBalanced(root->left) && isBalanced(root->right);
}
// 判断树高
int getHeight(TreeNode *node){
if(!node)
return 0;
return max(getHeight(node->left), getHeight(node->right))+1;
}
};