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