非递归先,中,后遍历二叉树
来源:互联网 发布:mcu选型软件 编辑:程序博客网 时间:2024/05/01 23:16
1:后序遍历二叉树
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//后序遍历二叉树,在函数中改变了树T,可以在函数中对原树T进行复制然后处理复制树或者加些辅助结构
public
static
void
InOrderTraverse(Tree T,Tree r){
Stake<Tree> stake =
new
Stake<Tree>();
//栈
stake.push(T);
Tree tem = T;
while
(!stake.isEmpty()){
while
(tem!=
null
&& tem.lchild !=
null
){
//向左走到尽头,等于访问根的左子树=null
stake.push(tem.lchild);
tem = tem.lchild;
}
tem = tem.rchild;
//访问右子树
if
(tem !=
null
)stake.push(tem);
else
{
//一个节点的左子树和右子树都为null的情况,即表明该根节点的左右子树均已经被访问过了,现在访问根节点
tem = stake.pop();
System.out.print(tem.ele+
" "
);
//访问根节点
tem = stake.peek();
if
(tem ==
null
)
return
;
//遍历结束
if
(tem.lchild !=
null
)tem.lchild =
null
;
//如果左子树被访问,设置其左为null,在此处改变了树
else
tem.rchild =
null
;
//同理,设置其右为null
}
}
}
2:先序和中序遍历二叉树
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//非递归方法遍历二叉树,中序遍历
public
static
void
InOrderTraverse(Tree T){
Stake<Tree> stake =
new
Stake<Tree>();
stake.push(T);
Tree tem = T;
while
(!stake.isEmpty()){
while
(tem!=
null
&& tem.lchild !=
null
){
//向左走到尽头
stake.push(tem.lchild);
tem = tem.lchild;
}
tem = stake.pop();
System.out.print(tem.ele+
" "
);
//访问根节点
tem = tem.rchild;
//访问右子树
if
(tem !=
null
)stake.push(tem);
}
}
//非递归方法遍历二叉树二
public
static
void
InOrderTraverse2(Tree T){
Stake<Tree> stake =
new
Stake<Tree>();
//栈道
//stake.push(T);
Tree tem = T;
boolean
flag =
true
;
while
(flag || !stake.isEmpty()){
flag =
false
;
if
(tem !=
null
){
System.out.println(tem.ele+
" "
);
//先序遍历法
stake.push(tem); tem = tem.lchild;
//遍历左子树
}
else
{
tem = stake.pop();
//System.out.print(tem.ele+" ");//中序遍历法访问根节点
tem = tem.rchild;
//遍历右子树
}
}
}
0 0
- 二叉树递归遍历(先,中,后),非递归遍历(先,中,后) (数据结构作业)
- 二叉树-非递归遍历(先、中、后)
- 非递归先,中,后遍历二叉树
- 二叉树 非递归 先序遍历 中序遍历 后序遍历 层次遍历
- 二叉树的先序、中序、后序递归遍历和非递归遍历
- 二叉树的先根遍历,中根遍历,后根遍历的非递归算法
- 二叉树非递归先序遍历、中序遍历、后序遍历
- 非递归先序遍历二叉树、非递归中序遍历二叉树、非递归后序遍历二叉树
- 二叉树的遍历 中序 后序 先序 递归 非递归
- 二叉树的先序、中序、后序遍历的递归和非递归实现
- 二叉树的创建和先序,中序,后序,递归,非递归遍历
- 二叉树非递归和递归遍历(先序,中序,后序)
- 二叉树创建、删除、(递归/非递归)先序(中序/后序)遍历
- 二叉树遍历 递归与非递归 先序-中序-后序
- 二叉树的先序、中序、后序、层序递归及非递归遍历
- 二叉树 先、中、后序递归和非递归遍历
- 二叉树的遍历 先序 中序 后序 递归非递归
- 二叉树的先序、中序、后序遍历(递归 and 非递归)
- eclipse, Log4j配置(真心的详细~)
- jmp指令的机器码编写
- Linux下I2C驱动架构全面分析
- 网站建设的基础入门
- 它会知道什么编译的
- 非递归先,中,后遍历二叉树
- 对H264码流数据的NAL起始字节分析(档次、NALU类型)
- SQL SERVER 导入 EXCEL “文本被截断,或者一个或多个字符在目标代码页中没有匹配项”
- 双目视觉与虚拟现实之间
- IOS Dev Intro - Opengl ES Series 01
- javascript实现的base64编码解码
- 透明度计算,百分比和十六进制关系
- ionic使用记录---栅格模式
- 仿微信上传图片功能