输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
看似简单的一道题, 为啥我就做不出来呢???
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int _caculate(struct TreeNode* root){
if(root==NULL){
return 0;
}
int left=_caculate(root->left);
int right=_caculate(root->right);
if(left!=-1&&right!=-1&&abs(left-right)<2){
if(left>right){
return left+1;
}else{
return right+1;
}
}else{
return -1;
}
}
bool isBalanced(struct TreeNode* root){
int res = _caculate(root);
if(res == -1){
return false;
}else{
return true;
}
}
网友评论