题目:
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。
思路:
首先需要一个函数来计算当前节点位于树的第几层(这里规定叶子节点为第0层),然后每个节点的层数等于左右子树层数的较大值+1。然后只需要递归判断每个节点的左右子树的层数差是不是在1以内即可。
代码:
<span style="font-size:18px;">class Solution {
public:
bool isBalanced(TreeNode* root) {
if(root==NULL)
return true;
if(isBalanced(root->left)&&isBalanced(root->right))
if(abs(count(root->left)-count(root->right))<=1)
return true;
return false;
}
int count(TreeNode* tp)
{
int a,b;
if(tp==NULL)
return 0;
a=count(tp->left);
b=count(tp->right);
return max(a,b)+1;
}
};</span>
结果