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,并不是叶子结点的最大深度和最小深度不超过1.
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int dfs(TreeNode* root,bool& res)
{
if(!root) return 0;
int a=dfs(root->left,res)+1;
int b=dfs(root->right,res)+1;
if(abs(a-b)>1) res=false;
return max(a,b);
}
bool isBalanced(TreeNode* root) {
bool res=true;
dfs(root,res);
return res;
}
};