树的三种遍历方法代码实现 (数据结构)C语言
来源:互联网 发布:网络流行歌曲2014 编辑:程序博客网 时间:2024/05/22 06:24
在此分别总结先序,中序,后序的结点输出顺序。
先序: 1.访问根结点
2.访问左子树
3.访问右子树
中序:1.访问左子树
2.访问根结点
3.访问右子树
访问左子树。【先访问左子树中的左子树,再访问左子树中的右子树。】直到访问到叶子结点后输出。
输出根。
访问右子树。【先访问右子树中的左子树,再访问右子树中的右子树。】直到访问到叶子结点后输出。
后序:1.访问左子树
2.访问右子树
3.访问根
访问左子树。【先访问左子树中的左子树,再访问左子树中的右子树】。直到访问到叶子结点后输出。
访问右子树。【先访问右子树中的左子树,再访问右子树中的右子树】。直到访问到叶子结点后输出。
再返回访问根,并输出。
如何用栈实现递三种遍历树的算法
1)前序遍历
void preorder_nonrecursive(Bitree T) /* 先序遍历二叉树的非递归算法 */
{
initstack(S);
push(S,T); /* 根指针进栈 */
while(!stackempty(S)) {
while(gettop(S,p)&&p) { /* 向左走到尽头 */
visit(p); /* 每向前走一步都访问当前结点 */
push(S,p->lchild);
}
pop(S,p);
if(!stackempty(S)) { /* 向右走一步 */
pop(S,p);
push(S,p->rchild);
}
}
}
2)中序遍历
void inorder_nonrecursive(Bitree T)
{
initstack(S); /* 初始化栈 */
push(S, T); /* 根指针入栈 */
while (!stackempty(S)) {
while (gettop(S, p) && p) /* 向左走到尽头 */
push(S, p->lchild);
pop(S, p); /* 空指针退栈 */
if (!stackempty(S)) {
pop(S, p);
visit(p); /* 访问当前结点 */
push(S, p->rchild); /* 向右走一步 */
}
}
}
3)后序遍历
typedef struct {
BTNode* ptr;
enum {0,1,2} mark;
} PMType; /* 有mark域的结点指针类型 */
void postorder_nonrecursive(BiTree T) /*
后续遍历二叉树的非递归算法 */
{
EMType a;
initstack(S); /* S的元素为EMType类型 */
push (S,{T,0}); /* 根结点入栈 */
while(!stackempty(S)) {
pop(S,a);
switch(a.mark)
{
case 0:
push(S,{a.ptr,1}); /* 修改mark域 */
if(a.ptr->lchild)
push(S,{a.ptr->lchild,0}); /* 访问左子树 */
break;
case 1:
push(S,{a.ptr,2}); /* 修改mark域 */
if(a.ptr->rchild)
push(S,{a.ptr->rchild,0}); /* 访问右子树 */
break;
case 2:
visit(a.ptr); /* 访问结点 */
}
}
}
- 树的三种遍历方法代码实现 (数据结构)C语言
- 树的三种遍历方式(C语言实现)
- 数据结构-C语言递归实现树的前中后序遍历
- C语言基本数据结构之二(二叉树的三种遍历,节点数以及深度算法)
- 数据结构 c语言实现 二叉树的层次遍历(linux下实现)
- 重温数据结构:二叉树的常见方法及三种遍历方式 Java 实现
- 重温数据结构:二叉树的常见方法及三种遍历方式 Java 实现
- 数据结构C语言二叉树的遍历
- 数据结构 二叉树的建立及三种遍历方法
- 数据结构-二叉树的遍历(类C语言描述)
- 严蔚敏《数据结构》的全部代码实现(C语言)
- c语言实现顺序二叉树的非递归的三种遍历算法
- c语言-数据结构-二叉树-生成、遍历代码
- C语言数据结构实现二叉树递归与非递归遍历(数据结构第四次实验)
- java实现二叉树的构建以及三种遍历方法(先序遍历,中序遍历,后续遍历)
- C语言:二叉树的三种遍历方式
- 【数据结构】数据结构C语言的实现(简单二叉树)
- 数据结构(C实现)------- 遍历二叉树
- 深拷贝
- 用css解决table文字溢出控制td显示字数
- 根据日期获得第几周数据
- Android Studio入门到精通
- 对于Java程序猿学习的建议
- 树的三种遍历方法代码实现 (数据结构)C语言
- POJ-2481 Cows (树状数组 入门题)
- tensorflow基础语法
- Hash Map / Hash Set
- 基于51单片机的寻迹小车制作(三)
- linux网络编程-----几种服务器模型及io多路复用函数
- 列出连通集
- 10.11
- R Note 统计基础