剑指Offer刷题(平衡二叉树)
一.题目描述二.代码(C++)三.提交记录四.备注
一.题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
二.代码(C++)
class Solution
{
public
:
bool
IsBalanced_Solution(TreeNode
* pRoot
) {
return depth(pRoot
)!=-1;
}
int depth(TreeNode
* root
)
{
if(!root
)
return 0;
int l
=depth(root
->left
);
if(l
==-1)
return -1;
int r
=depth(root
->right
);
if(r
==-1)
return -1;
return abs(l
-r
)>1?-1:max(l
, r
)+1;
}
};
三.提交记录
四.备注
平衡二叉树:左右子树的深度差不超过1,且左右子树都是平衡二叉树。