由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - how to check a bin tree is balanced?
相关主题
算法题:如何判断二叉树是AVL?Leetcode Valid Number
大牛看看为撒这个sqrt binary search过不了OJSearch a 2D Matrix的两种写法,哪种更好?
Google Intern 面试 【请教】急!google 一面。请大侠看看
请教个面试题判断BT是否BST?
菜鸟问一道java题目,check balanced binary tree请教一下jump game
Google Front-end Software Engineer Phone InterviewBST里面删除节点的问题
C++ Q23: if if elseleetcode valid bst new test cases 过不去了。。。
Microsoft screening programming problemzenefit 电面面经
相关话题的讨论汇总
话题: return话题: getheight
进入JobHunting版参与讨论
1 (共1页)
g***x
发帖数: 494
1
which of below is incorrect?
方法1.
int getheight(node r)
{
if r==0 return 0;
return max(getheight(r.left),getheight(r.right))+1;
}
bool checkbalance(node r)
{
if r==0 return true;
int diff=getheight(r.left)-getheight(r.right)
if | diff|>1 return false;
else
return checkbalance(r.left)&&checkbalance(r.right);
}
方法2.
int getmaxheight(node r)
{
if r==0 return 0;
else
return max(getmaxheight(r.left),getmaxheight(r.right))+1;
}
int getminheight(node r)
{
if r==0 return 0;
else
return min(getminheight(r.left),getminheight(r.right))+1;
}
bool checkbalance(node r)
{
if getmaxheight(root)-getminheight(root)<=1 return true;
else
return false;
}
方法2看似是不是有点问题?
l********e
发帖数: 34
2
Method 2, getminheight will always return 1.
Thus is not correct.

【在 g***x 的大作中提到】
: which of below is incorrect?
: 方法1.
: int getheight(node r)
: {
: if r==0 return 0;
: return max(getheight(r.left),getheight(r.right))+1;
: }
: bool checkbalance(node r)
: {
: if r==0 return true;

y**********u
发帖数: 6366
3
Really?

【在 l********e 的大作中提到】
: Method 2, getminheight will always return 1.
: Thus is not correct.

g***x
发帖数: 494
4
能举例说明吗?

【在 l********e 的大作中提到】
: Method 2, getminheight will always return 1.
: Thus is not correct.

l********e
发帖数: 34
5
Ah, sorry, I was wrong.
Please ignore me....

【在 g***x 的大作中提到】
: 能举例说明吗?
g*****i
发帖数: 2162
6
我觉得得看怎么定义balanced tree
如果定义是任意两个叶子节点的高度差不能大于1,那么方法二正确,方法一错误.
如果定义是左右子树都平衡,并且高度差不能大于1,那么方法一正确,方法二错误.
总的来说方法二更严格些.
c**m
发帖数: 535
7
好吧,对于不同的balanced的定义,确实有不同的解法。
但就针对定义1:任意两个叶子节点的高度差不能大于1,方法二也不是正确的
问题在于minDepth()上面
举一个例子,如果一个树是:
N
/ \
N N
/ \
N N
/ \
N N
只有两个叶子,而且高度相同,应该算是balanced
但root的maxdepth/mindepth使用方法二计算出的是4/2,应为左右两个path都是
1/1,2/1,3/1
对于定义2,方法一是正确的。
对于定义1,它比定义2更加严格一些,两个方法都不正确。
另外,LZ是不是看了这个post?
http://stackoverflow.com/questions/742844/how-to-determine-if-b

【在 g*****i 的大作中提到】
: 我觉得得看怎么定义balanced tree
: 如果定义是任意两个叶子节点的高度差不能大于1,那么方法二正确,方法一错误.
: 如果定义是左右子树都平衡,并且高度差不能大于1,那么方法一正确,方法二错误.
: 总的来说方法二更严格些.

1 (共1页)
进入JobHunting版参与讨论
相关主题
zenefit 电面面经菜鸟问一道java题目,check balanced binary tree
问一个问题: binary search Tree的删除用java实现。Google Front-end Software Engineer Phone Interview
哪位大牛能给贴个tri-nary search tree的delete的code?C++ Q23: if if else
interleave string 的题目Microsoft screening programming problem
算法题:如何判断二叉树是AVL?Leetcode Valid Number
大牛看看为撒这个sqrt binary search过不了OJSearch a 2D Matrix的两种写法,哪种更好?
Google Intern 面试 【请教】急!google 一面。请大侠看看
请教个面试题判断BT是否BST?
相关话题的讨论汇总
话题: return话题: getheight