由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 遍历二叉树除了recursion还有啥好办法?
相关主题
问一个题一道二叉树的老题
请问一个关于递归算法的问题。问一道二叉树遍历的问题? 谢谢!
求问把二叉树的recursive遍历改为stack实现的思路二叉树后续遍历,不用递归和栈,只有个parent指针
问一道二叉树serialize的问题[讨论] 算法超级大总结-- 面试中二叉树中常常考的题目,欢迎大家进来补充
感恩发面经-Amazon第二轮电面请教一道题
判断 T1 是 T2 子串 如果 节点有重复的情况...Quick sort为什么需要logN的memory?
DFS 堆栈溢出,怎么破?好吧,RP总算小爆发了一次
非递归求二叉树高度,除了按层次遍历的方法,还可以怎么做?递归多少层会stackoverflow?
相关话题的讨论汇总
话题: current话题: stack话题: recursion话题: 遍历话题: 先序
进入JobHunting版参与讨论
1 (共1页)
W***o
发帖数: 6519
1
今天给了一个recursion的解法,然后又让我用stack做,我当时萌了,大家说说stack
咋解?
f******i
发帖数: 82
2
标准dfs遍历,也可以用queue做标准bfs遍历,这些都是基础,建议楼主多做点题

stack

【在 W***o 的大作中提到】
: 今天给了一个recursion的解法,然后又让我用stack做,我当时萌了,大家说说stack
: 咋解?

p**t
发帖数: 157
3
取决于你哪种遍历方法
后序最麻烦 先序最简单

stack

【在 W***o 的大作中提到】
: 今天给了一个recursion的解法,然后又让我用stack做,我当时萌了,大家说说stack
: 咋解?

p**t
发帖数: 157
4
不会用栈遍历二叉树的 你让他用栈做DFS不是更不会。。。

【在 f******i 的大作中提到】
: 标准dfs遍历,也可以用queue做标准bfs遍历,这些都是基础,建议楼主多做点题
:
: stack

p**t
发帖数: 157
5
举个先序的例子给你吧
while(current != NULL || !stack.empty()){
if(current != NULL){
stack.push(current);
visit(current);
current = current -> left;
}
else{
current = stack.top();
stack.pop();
current = current -> right;
}
}
中序的其实很类似 访问current的时间变一下而已

stack

【在 W***o 的大作中提到】
: 今天给了一个recursion的解法,然后又让我用stack做,我当时萌了,大家说说stack
: 咋解?

w****k
发帖数: 755
6
后序用两个堆栈来解那是相当容易,不到10行代码。

【在 p**t 的大作中提到】
: 取决于你哪种遍历方法
: 后序最麻烦 先序最简单
:
: stack

w****a
发帖数: 710
7
后续可以当先序做,push的时候先左后右,最后reverse一下,也简单
g*******0
发帖数: 20
8
递归不就是用栈实现的么,把传入递归函数的参数压栈即可。

stack

【在 W***o 的大作中提到】
: 今天给了一个recursion的解法,然后又让我用stack做,我当时萌了,大家说说stack
: 咋解?

W***o
发帖数: 6519
9
谢谢,
我去之前是毫无准备,以为不会考算法;就这recursive解法我还是吃老本的,呵呵

【在 p**t 的大作中提到】
: 举个先序的例子给你吧
: while(current != NULL || !stack.empty()){
: if(current != NULL){
: stack.push(current);
: visit(current);
: current = current -> left;
: }
: else{
: current = stack.top();
: stack.pop();

k*******a
发帖数: 433
10
曾经有个牛人告诉我,只要可以递归的,都可以用栈实现
相关主题
判断 T1 是 T2 子串 如果 节点有重复的情况...一道二叉树的老题
DFS 堆栈溢出,怎么破?问一道二叉树遍历的问题? 谢谢!
非递归求二叉树高度,除了按层次遍历的方法,还可以怎么做?二叉树后续遍历,不用递归和栈,只有个parent指针
进入JobHunting版参与讨论
j****y
发帖数: 684
11
bt的人家直接考非stack,非recursion,且O(1)的

【在 k*******a 的大作中提到】
: 曾经有个牛人告诉我,只要可以递归的,都可以用栈实现
p**t
发帖数: 157
12
通常都只允许用一个栈来解决吧- -

【在 w****k 的大作中提到】
: 后序用两个堆栈来解那是相当容易,不到10行代码。
p**t
发帖数: 157
13
因为递归的实际实现就是把前一个function call入栈 然后处理调用的新call。。

【在 k*******a 的大作中提到】
: 曾经有个牛人告诉我,只要可以递归的,都可以用栈实现
d****n
发帖数: 233
14
There are several ways to traverse a binary tree:
http://codeanytime.blogspot.com/2014/11/binary-tree-postorder-t
http://codeanytime.blogspot.com/2014/11/binary-tree-postorder-t

【在 p**t 的大作中提到】
: 因为递归的实际实现就是把前一个function call入栈 然后处理调用的新call。。
p**t
发帖数: 157
15
还有pre-order的。。。

【在 d****n 的大作中提到】
: There are several ways to traverse a binary tree:
: http://codeanytime.blogspot.com/2014/11/binary-tree-postorder-t
: http://codeanytime.blogspot.com/2014/11/binary-tree-postorder-t

m*********1
发帖数: 204
16
请问这个怎么写啊

【在 w****a 的大作中提到】
: 后续可以当先序做,push的时候先左后右,最后reverse一下,也简单
p**t
发帖数: 157
17
先序会写吧?
先访问右子树的先序会不会写?
先访问左子树的后序遍历
就相当于先访问右子树的先序的结果做一个反序。。。
当然面试的时候我不建议你这么做 因为这显然不是考你的人想要的答案
到时候人家要你不反转的做你还是得老老实实的写。。。

【在 m*********1 的大作中提到】
: 请问这个怎么写啊
1 (共1页)
进入JobHunting版参与讨论
相关主题
递归多少层会stackoverflow?感恩发面经-Amazon第二轮电面
二叉树按列打印的最大问题是怎么定义列判断 T1 是 T2 子串 如果 节点有重复的情况...
请问如果要求in place的话,递归是不是就不能用了?DFS 堆栈溢出,怎么破?
一道MS面试题非递归求二叉树高度,除了按层次遍历的方法,还可以怎么做?
问一个题一道二叉树的老题
请问一个关于递归算法的问题。问一道二叉树遍历的问题? 谢谢!
求问把二叉树的recursive遍历改为stack实现的思路二叉树后续遍历,不用递归和栈,只有个parent指针
问一道二叉树serialize的问题[讨论] 算法超级大总结-- 面试中二叉树中常常考的题目,欢迎大家进来补充
相关话题的讨论汇总
话题: current话题: stack话题: recursion话题: 遍历话题: 先序