给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
// Definition for a binary tree node.
// struct TreeNode {
// int val;
// struct TreeNode *left;
// struct TreeNode *right;
// };
typedef struct TreeNode node;
int bianli(node* root)
{
node* p = root;
if(p==NULL){
return NULL;
}
int left = bianli(p->left);
if(left==-1){
return -1;
}
int right = bianli(p->right);
if(right==-1){
return -1;
}
if(abs(right-left)>1){
return -1;
}
return (right>left?right:left)+1;
}
bool isBalanced(struct TreeNode* root){
return bianli(root)!=-1;
}