1、
Balanced Binary Tree
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则是,递归判断左右子树。
class Solution {
public:
bool isBalanced(TreeNode *root) {
if(!root){
return true;
}
isBalancedTree = true;
calDepth(root);
return isBalancedTree;
}
int calDepth(TreeNode* root){
if(!isBalancedTree){
return 0;
}
if(!root->left && !root->right){
return 1;
}
int left = 0;
int right = 0;
if(root->left){
left = calDepth(root->left);
}
if(root->right){
right = calDepth(root->right);
}
if(abs(left-right) > 1){
isBalancedTree = false;
}
return max(right,left)+1;
}
bool isBalancedTree;
};