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.
用一个变量保存当前结点的深度
/**
* 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) {
int depth = 0;
return isBalance(root,&depth);
}
bool isBalance(TreeNode* root, int* depth) {
if(root == NULL) {
*depth = 0;
return true;
}
int left,right;
if(isBalance(root->left,&left) && isBalance(root->right,&right)) {
int dif = left-right;
if(dif<=1 && dif>=-1) {
*depth = left>right?left+1:right+1;
return true;
}
}
return false;
}
};