c********t 发帖数: 5706 | 1 上次有人发了 postorder只用一个stack的iteration解法。 inorder有谁有解法?
我用了一个stack还用了一个size n 的hashmap,好像不太漂亮。 |
b***m 发帖数: 5987 | 2 我一般用这个:
void InOrder(Node *pRoot)
{
Stack s;
Node *pNode = pRoot;
while( pNode || !s.Empty() )
{
while( pNode )
{
s.push(pNode);
pNode = pNode->pLeft;
}
if( !s.Empty() )
{
pNode = s.pop();
Visit(pNode);
pNode = pNode->pRight;
}
}
} |
c********t 发帖数: 5706 | 3 多谢!
★ 发自iPhone App: ChineseWeb 7.7
【在 b***m 的大作中提到】 : 我一般用这个: : void InOrder(Node *pRoot) : { : Stack s; : Node *pNode = pRoot; : : while( pNode || !s.Empty() ) : { : while( pNode ) : {
|
p*****2 发帖数: 21240 | 4
怎么有个visit function?
【在 b***m 的大作中提到】 : 我一般用这个: : void InOrder(Node *pRoot) : { : Stack s; : Node *pNode = pRoot; : : while( pNode || !s.Empty() ) : { : while( pNode ) : {
|
b***m 发帖数: 5987 | 5
就是表示访问了这个节点,不用太在意。
【在 p*****2 的大作中提到】 : : 怎么有个visit function?
|
p*****2 发帖数: 21240 | 6
这样也行?
【在 b***m 的大作中提到】 : : 就是表示访问了这个节点,不用太在意。
|
l*****a 发帖数: 14598 | 7 面世官在意你就完蛋了
他肯定会在意的
【在 b***m 的大作中提到】 : : 就是表示访问了这个节点,不用太在意。
|
l*****a 发帖数: 14598 | 8 有一道著名的面世题不知到你做没做过
给BT中一node,找inOrderTraverse的next
然后就用这个结果从leftmost开始就成了
【在 c********t 的大作中提到】 : 上次有人发了 postorder只用一个stack的iteration解法。 inorder有谁有解法? : 我用了一个stack还用了一个size n 的hashmap,好像不太漂亮。
|
b***m 发帖数: 5987 | 9 晕,我只是为了省点儿事儿没在这里写出来而已嘛。
【在 p*****2 的大作中提到】 : : 这样也行?
|
b***m 发帖数: 5987 | 10 你面试别人的话你会在意嘛?
【在 l*****a 的大作中提到】 : 面世官在意你就完蛋了 : 他肯定会在意的
|
|
|
l*****a 发帖数: 14598 | 11 等等,我搞错了,被误导了
以为你用了visit flag...
直接cout<data<
【在 b***m 的大作中提到】 : 你面试别人的话你会在意嘛?
|
b***m 发帖数: 5987 | 12
嗯嗯,这就是了嘛。
【在 l*****a 的大作中提到】 : 等等,我搞错了,被误导了 : 以为你用了visit flag... : 直接cout<data<
|
c********t 发帖数: 5706 | 13 明白了。多谢! 我记得那题我用recursion做的,是不是也一样能找next吧,而且复杂
度一样?
【在 l*****a 的大作中提到】 : 有一道著名的面世题不知到你做没做过 : 给BT中一node,找inOrderTraverse的next : 然后就用这个结果从leftmost开始就成了
|
p*****2 发帖数: 21240 | 14
我跟lolhaha看的一样。这个写的挺好的。你自己写的吗?
【在 b***m 的大作中提到】 : : 嗯嗯,这就是了嘛。
|
b***m 发帖数: 5987 | 15
对啊,PreOrder和InOrder我都用这套代码,把Visit换个地方就行,比较省事儿。;-)
【在 p*****2 的大作中提到】 : : 我跟lolhaha看的一样。这个写的挺好的。你自己写的吗?
|