由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 现在怎么都是讨论offer的,没有做题的了?
相关主题
LeetCode题Binary Tree Inorder Traversalreconstruct the tree from inorder and postorder lists
G家新鲜面经问一道算法题
construct bst from post and inorder 总是Memory Limit Exceeded问个1337网页上面的经典题
攒人品,amazon一面经历preorder/postorder和inorder重建树有非递归的方法吗?
豁出去了,决定怒刷100题考大家个新题 visitor reconstruct generic tree
A电面一题 基本已挂问一道二叉树遍历的问题? 谢谢!
问几个有关Binary tree的题[leetcode] Binary Tree from Inorder & Postorder Traversal
时隔一年再次得到Amazon电面机会LeetCode construct Binary Tree
相关话题的讨论汇总
话题: none话题: else话题: root话题: elif话题: while
进入JobHunting版参与讨论
1 (共1页)
p*****2
发帖数: 21240
1
有人上道题大家讨论吗?
h****e
发帖数: 928
2
我最近在做一道用parent,left, right指针前中后序遍历binary tree
的题目,觉得比通常的用left,right和stack的难一些。你做过吗?

【在 p*****2 的大作中提到】
: 有人上道题大家讨论吗?
l*****a
发帖数: 14598
3
那个比stack容易吧.
no need to do stack.push();
for stack.pop() ,just use current->parent

【在 h****e 的大作中提到】
: 我最近在做一道用parent,left, right指针前中后序遍历binary tree
: 的题目,觉得比通常的用left,right和stack的难一些。你做过吗?

h****e
发帖数: 928
4
你说的这个有用visited flag吗?

【在 l*****a 的大作中提到】
: 那个比stack容易吧.
: no need to do stack.push();
: for stack.pop() ,just use current->parent

l*****a
发帖数: 14598
5
不用啊
以前讨论国多少遍了
把你的stack solution直接翻译一下就OK

【在 h****e 的大作中提到】
: 你说的这个有用visited flag吗?
Z*****Z
发帖数: 723
6
不用,拣一个你觉得不好写的贴上来一起研究研究:)

【在 h****e 的大作中提到】
: 你说的这个有用visited flag吗?
Z*****Z
发帖数: 723
7
我刚才做了一下序列化二叉树到string然后读回来的题,递归的很好写。用stack的版本
,序列化时也很好写,但是反序列化的时候变得比较tricky,求拍或同感

【在 p*****2 的大作中提到】
: 有人上道题大家讨论吗?
p*****2
发帖数: 21240
8

这个东西我做一下练练。多谢。

【在 h****e 的大作中提到】
: 我最近在做一道用parent,left, right指针前中后序遍历binary tree
: 的题目,觉得比通常的用left,right和stack的难一些。你做过吗?

p*****2
发帖数: 21240
9
preorder这个怎么样?
def preorder(root):
n=root
while n!=None:
print n.val
if n.left!=None:
n=n.left
elif n.right!=None:
n=n.right
else:
while(n.parent!=None and (n!=n.parent.left or n.parent.right==
None)):
n=n.parent
n=n.parent
if(n!=None):
n=n.right
l*****a
发帖数: 14598
10
不太对,要找到一个n.parent.right!=None的才可以用
否则。。。

【在 p*****2 的大作中提到】
: preorder这个怎么样?
: def preorder(root):
: n=root
: while n!=None:
: print n.val
: if n.left!=None:
: n=n.left
: elif n.right!=None:
: n=n.right
: else:

相关主题
A电面一题 基本已挂reconstruct the tree from inorder and postorder lists
问几个有关Binary tree的题问一道算法题
时隔一年再次得到Amazon电面机会问个1337网页上面的经典题
进入JobHunting版参与讨论
l*****a
发帖数: 14598
11
我打算这么写
while(1)
{
if(current->parent==NULL) return;
if(current->parent->left==current&¤t->parent->right)
{ current=current->parent->right; break; }
current=current->parent;
}

【在 l*****a 的大作中提到】
: 不太对,要找到一个n.parent.right!=None的才可以用
: 否则。。。

p*****2
发帖数: 21240
12
inorder 这个行不行
def inorder(root):
f=0
n=root
while n!=None:
if f==2:
if n.parent!=None and n==n.parent.left:
f=1
n=n.parent;
elif f==1:
print n.val
if n.right!=None:
f=0
n=n.right
else:
f=2
else:
if n.left!=None:
n=n.left
else:
f=1
p*****2
发帖数: 21240
13

刚回来。是不对。

【在 l*****a 的大作中提到】
: 不太对,要找到一个n.parent.right!=None的才可以用
: 否则。。。

p*****2
发帖数: 21240
14
postorder?
def postorder(root):
f=0
n=root
while n!=None:
if f==2:
print n.val
if n.parent!=None and n==n.parent.left:
f=1
n=n.parent
elif f==1:
if n.right!=None:
f=0
n=n.right
else:
f=2
else:
if n.left!=None:
n=n.left
else:
f=1
p*****2
发帖数: 21240
15
按照这个思路又写了一个preorder
def preorder2(root):
f=0
n=root
while n!=None:
if f==2:
if n.parent!=None and n==n.parent.left:
f=1
n=n.parent
elif f==1:
if n.right!=None:
f=0
n=n.right
else:
f=2
else:
print n.val
if n.left!=None:
n=n.left
else:
f=1
p*****2
发帖数: 21240
16

版本
这个我一会儿做一下

【在 Z*****Z 的大作中提到】
: 我刚才做了一下序列化二叉树到string然后读回来的题,递归的很好写。用stack的版本
: ,序列化时也很好写,但是反序列化的时候变得比较tricky,求拍或同感

l*****a
发帖数: 14598
17
你搞了些flag看着不舒服
i will goto leftmost, then each time call FindInOrderNext()

【在 p*****2 的大作中提到】
: inorder 这个行不行
: def inorder(root):
: f=0
: n=root
: while n!=None:
: if f==2:
: if n.parent!=None and n==n.parent.left:
: f=1
: n=n.parent;
: elif f==1:

p*****2
发帖数: 21240
18

我觉得有flag这个思路更清晰。写code不容易出错。当然前提是我写的code是对的。

【在 l*****a 的大作中提到】
: 你搞了些flag看着不舒服
: i will goto leftmost, then each time call FindInOrderNext()

l*****a
发帖数: 14598
19
你搞了些多余的东西。面试管不会让你过的///

【在 p*****2 的大作中提到】
:
: 我觉得有flag这个思路更清晰。写code不容易出错。当然前提是我写的code是对的。

p*****2
发帖数: 21240
20

啥是多余的?一个flag就多余了?哪个面试官规定不能用flag呢?

【在 l*****a 的大作中提到】
: 你搞了些多余的东西。面试管不会让你过的///
相关主题
preorder/postorder和inorder重建树有非递归的方法吗?[leetcode] Binary Tree from Inorder & Postorder Traversal
考大家个新题 visitor reconstruct generic treeLeetCode construct Binary Tree
问一道二叉树遍历的问题? 谢谢!Construct Binary Tree from Inorder and Postorder Traversal
进入JobHunting版参与讨论
p*****2
发帖数: 21240
21

版本
这题的话,recursion面试是不是就够了?

【在 Z*****Z 的大作中提到】
: 我刚才做了一下序列化二叉树到string然后读回来的题,递归的很好写。用stack的版本
: ,序列化时也很好写,但是反序列化的时候变得比较tricky,求拍或同感

l*****a
发帖数: 14598
22
问题是不需要啊。。

【在 p*****2 的大作中提到】
:
: 版本
: 这题的话,recursion面试是不是就够了?

p*****2
发帖数: 21240
23

谁规定需要和不需要呢?空间是O(1)的就是一个变量而已,又不是O(n)的。不同的算
法,少用一个变量的算法就更好?那样说的话,你的算法还多用了循环了吧?而且
while(true)看起来也不舒服呀。我觉得多用一个变量面试不是什么问题。

【在 l*****a 的大作中提到】
: 问题是不需要啊。。
l*****a
发帖数: 14598
24
那好。你就这么做吧
我只表达我的观点

【在 p*****2 的大作中提到】
:
: 谁规定需要和不需要呢?空间是O(1)的就是一个变量而已,又不是O(n)的。不同的算
: 法,少用一个变量的算法就更好?那样说的话,你的算法还多用了循环了吧?而且
: while(true)看起来也不舒服呀。我觉得多用一个变量面试不是什么问题。

p*****2
发帖数: 21240
25

我觉得这个变量还是需要的。面试的时候问我问题,我有我的算法。这题要求不能使用
recursion和stack,这是限制。我想到了我的算法,我的算法需要一个flag来实现。我
写code实现了。基本就可以了吧?面试官会因为有另外一种算法少使用一个变量而毙掉
我?这个我不是很明白。不过你是大牛,如果我的理解有误还请指出来。

【在 l*****a 的大作中提到】
: 那好。你就这么做吧
: 我只表达我的观点

A**l
发帖数: 2650
26
这种变量确实应该尽可能少用,因为不具备可扩展性以及scalability

【在 p*****2 的大作中提到】
:
: 我觉得这个变量还是需要的。面试的时候问我问题,我有我的算法。这题要求不能使用
: recursion和stack,这是限制。我想到了我的算法,我的算法需要一个flag来实现。我
: 写code实现了。基本就可以了吧?面试官会因为有另外一种算法少使用一个变量而毙掉
: 我?这个我不是很明白。不过你是大牛,如果我的理解有误还请指出来。

p*****2
发帖数: 21240
27

不明白。能不能具体谈谈?

【在 A**l 的大作中提到】
: 这种变量确实应该尽可能少用,因为不具备可扩展性以及scalability
A**l
发帖数: 2650
28
sorry,我是从最后帖子看的,之前没看代码,以为你用了O(n)的额外变量
刚才把讨论和代码都看了一遍
不过我还是同意楼上的观点,尽可能少用额外变量,在loop里面放了这么一个状态机
是人为的把code弄复杂了,象楼上提炼出一个primitive function来简化design是值
得赞许的思维方式。
除非,你这个遍历是能够证明为效率很高的,大量使用的话可以提高performance

【在 p*****2 的大作中提到】
:
: 不明白。能不能具体谈谈?

p*****2
发帖数: 21240
29

还是不明白。我觉得这是两种算法来解决这个问题呀。我这种算法就是需要这么一个变
量才行。我想应该首先从算法上着手讨论吧?面试的时候肯定也是先说算法,然后写
code,会因为算法需要一个变量就被毙掉?如果同样的算法,当然是应该少用变量了。
这个我能明白。另外就是题目加了很多限制,不能recursion, 不能用stack, 并没有说
不能用一个变量呀。
在loop里面放了这么一个状态机
还有就是这句话什么意思呀?怎么叫人为的弄复杂了?不用这个变量根本不能完成这个
算法呀。你的意思是算法本身就很复杂?

【在 A**l 的大作中提到】
: sorry,我是从最后帖子看的,之前没看代码,以为你用了O(n)的额外变量
: 刚才把讨论和代码都看了一遍
: 不过我还是同意楼上的观点,尽可能少用额外变量,在loop里面放了这么一个状态机
: 是人为的把code弄复杂了,象楼上提炼出一个primitive function来简化design是值
: 得赞许的思维方式。
: 除非,你这个遍历是能够证明为效率很高的,大量使用的话可以提高performance

1 (共1页)
进入JobHunting版参与讨论
相关主题
LeetCode construct Binary Tree豁出去了,决定怒刷100题
Construct Binary Tree from Inorder and Postorder TraversalA电面一题 基本已挂
Amazon 电面问几个有关Binary tree的题
讨论一道leetcode上面的题时隔一年再次得到Amazon电面机会
LeetCode题Binary Tree Inorder Traversalreconstruct the tree from inorder and postorder lists
G家新鲜面经问一道算法题
construct bst from post and inorder 总是Memory Limit Exceeded问个1337网页上面的经典题
攒人品,amazon一面经历preorder/postorder和inorder重建树有非递归的方法吗?
相关话题的讨论汇总
话题: none话题: else话题: root话题: elif话题: while