二叉树的遍历(栈遍历与递归遍历)-数据结构(15)
来源:互联网 发布:网络社群有哪些 编辑:程序博客网 时间:2024/05/22 14:39
一、树的先序遍历
参考书P128-P132,先序列遍历是,先访问根结点,先序遍历左子树,然后先序遍历右子树递归下去。
二、树的遍历实现
1、递归遍历
Status PreOederTraverse(BiTree T, Status(*Visit)(TElemType e)){//利用先序遍历 二叉树 对每个元素进行visit函数 //递归的形式if (T){Visit(T->data);PreOederTraverse(T->lchild, Visit);PreOederTraverse(T->rchild, Visit);}return OK;}
2、栈的遍历
这里要说明下思想,其实栈中进栈的都是还没有遍历右子树的的结点。
Status InOrderTraverse(BiTree T,Status (*Visit)(TElemType e)){//利用栈的形式先序遍历二叉树 非递归版本SqStack stack;//栈中可以理解为 结点中没有进右结点的就进栈InitStack(stack);BiTree p = T;while (p || !StackEmpty(stack)){if (p){//当前结点不为空的情况下 进入栈中 进入左树 Visit(p->data);Push(stack, p);p = p->lchild;}else{//当前结点是空的Pop(stack,p);p = p->rchild;}}return OK;}
三、执行
char * preStr = "ABC##DE#G##F###";//先序遍历字符串BiTree tree;CreateBiTree(tree,preStr);printf("\n先序遍历\n");PreOederTraverse(tree,PrintElement);//PrintTree_L(tree,0);printf("\n先序遍历\n");InOrderTraverse(tree, PrintElement);输出:
先序遍历ABCDEGF先序遍历ABCDEGF请按任意键继续. . .
阅读全文
0 0
- 二叉树的遍历(栈遍历与递归遍历)-数据结构(15)
- 【数据结构与算法】二叉树的遍历(递归遍历、非递归遍历、层序遍历)
- [数据结构] 二叉树的递归与非递归遍历
- 【数据结构】二叉树的遍历(递归与非递归)
- 数据结构与算法学习记录--二叉树的创建,递归遍历,非递归遍历的实现
- 数据结构中二叉树的递归遍历与非递归遍历
- 数据结构-递归遍历二叉树
- 数据结构 二叉树的非递归遍历
- 【数据结构】二叉树的递归遍历
- 数据结构:二叉树的非递归遍历
- 二叉树的非递归遍历-数据结构
- 数据结构二叉树的递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的递归遍历与非递归遍历
- 二叉树的递归遍历与非递归遍历
- ASP.NET MVC登陆界面(结合bootstrap)
- [源码] Android 不要错过的7个完整项目学习
- Spring-SpringMvc
- 8(1)、uboot移植——DM9000的移植
- emacs tab 缩进空格 写给自己看的
- 二叉树的遍历(栈遍历与递归遍历)-数据结构(15)
- jar包的使用(maven依赖库)
- Jmeter连接远程机器进行压力测试
- 抛异常的正确姿势
- 一天都被 Kotlin 刷屏了,CSDN学院不服气,我也来刷刷
- 全景图相关
- Java MVC Controller 中通过不同方式获取 @PathVariable 参数值
- ElasticSearch Java Api(三) -更新索引库
- Android列表用法之二:实战ListView高级用法