6.37③ 试直接利用栈的基本操作写出先序遍历的非递归 形式的算法
来源:互联网 发布:mac 触摸板 手势 编辑:程序博客网 时间:2024/06/18 03:47
6.37③ 试直接利用栈的基本操作写出先序遍历的非递归
形式的算法(提示:不必按3.3.2节介绍的从递归到非递归
的方法而直接写出非递归算法)。
要求实现下列函数:
void PreOrder(BiTree bt, void (*visit)(TElemType));
/* 使用栈,非递归先序遍历二叉树bt, */
/* 对每个结点的元素域data调用函数visit */
二叉链表类型定义:
typedef struct BiTNode {
TElemType data;
BiTNode *lchild,*rchild;
} BiTNode, *BiTree;
可用栈类型Stack的相关定义:
typedef BiTree SElemType; // 栈的元素类型
Status InitStack(Stack &S);
Status StackEmpty(Stack S);
Status Push(Stack &S, SElemType e);
Status Pop(Stack &S, SElemType &e);
形式的算法(提示:不必按3.3.2节介绍的从递归到非递归
的方法而直接写出非递归算法)。
要求实现下列函数:
void PreOrder(BiTree bt, void (*visit)(TElemType));
/* 使用栈,非递归先序遍历二叉树bt, */
/* 对每个结点的元素域data调用函数visit */
二叉链表类型定义:
typedef struct BiTNode {
TElemType data;
BiTNode *lchild,*rchild;
} BiTNode, *BiTree;
可用栈类型Stack的相关定义:
typedef BiTree SElemType; // 栈的元素类型
Status InitStack(Stack &S);
Status StackEmpty(Stack S);
Status Push(Stack &S, SElemType e);
Status Pop(Stack &S, SElemType &e);
Status GetTop(Stack S, SElemType &e);
void PreOrder(BiTree bt, void (*visit)(TElemType))
/* 使用栈,非递归先序遍历二叉树bt, */
/* 对每个结点的元素域data调用函数visit */
{
//把结点压入栈中是为了方便访问结点的右结点
BiTree p = bt;
Stack s;
InitStack(s);
while(p || !StackEmpty(s)){
if(p){
visit(p->data);
Push(s, p);
p = p->lchild;
}else{
Pop(s, p);
p = p->rchild;
}
}
}
0 0
- 6.37③ 试直接利用栈的基本操作写出先序遍历的非递归 形式的算法
- 试直接利用栈的基本操作写出先序遍历的非递归
- 先序遍历的非递归算法
- 二叉树的基本操作(非递归前中后遍历,先序,表达式建树,复制二叉树)
- 利用栈实现二叉树的先序,中序,后序遍历的非递归操作
- 利用栈实现二叉树的先序,中序,后序遍历的非递归操作
- 二叉树的先序遍历(非递归算法)
- 二叉树的先序遍历(非递归算法)
- 带栈的二叉树非递归先序遍历
- 二叉树的先序递归以及非递归遍历
- 二叉树的先序递归,非递归遍历
- 先序遍历,中序遍历的非递归方法
- 非递归的先序遍历和中序遍历
- C++ 二叉树的遍历---先序遍历(非递归)
- 另一种先序遍历和中序遍历的非递归算法
- 非递归算法实现树的先序遍历,中序遍历,后序遍历;也有树的层次遍历。
- 二叉树的前序、中序、后序遍历的算法(递归形式和非递归形式)
- 利用非递归方法实现二叉树的先序遍历
- linux 启动脚本调用顺序(测试平台 AM335X-ARM A9)
- POJ 2965 The Pilots Brothers' refrigerator
- getchar()的陷阱
- Linux分段
- 吐槽
- 6.37③ 试直接利用栈的基本操作写出先序遍历的非递归 形式的算法
- 列表标签、表单标签—实验
- java 打jar包
- Linux GDT
- poj-3009-Curling 2.0-dfs
- 函数指针的定义及多个函数指针的定义
- 【Integer转换】Integer to Roman
- 独立游戏第4天
- Oracle BUG:ORA-00600[kmgs_parameter_update_timeout_1][17510]