二叉树的各种遍历方法
来源:互联网 发布:装修网络平台有哪些 编辑:程序博客网 时间:2024/05/23 10:55
根据不同要求二叉树有不同的遍历方法,主要有先序遍历(深度优先),中序遍历,后续遍历,广度优先……因为使用二叉树时经常用到树的遍历,便写下这篇文章,以供自己日后查看和需要的人学习。
先序遍历(深度优先),中序遍历,后续遍历,这四种遍历主要是用到递归算法,程序较为简单,而广度优先则需要借助队列来完成。
1、先序遍历
遍历顺序为:ABDECF
代码为:
void PreorderTraversal( BinTree BT ){ if(BT!=NULL){ printf(" %c",BT->Data); PreorderTraversal(BT->Left); PreorderTraversal(BT->Right); }}
2、中序遍历
输出为: DBEAFC
代码为:
void InorderTraversal( BinTree BT ){ if(BT!=NULL){ InorderTraversal(BT->Left); printf(" %c",BT->Data); InorderTraversal(BT->Right); }}
3、后续遍历
输出为:DEBFCA
代码为:
void PostorderTraversal( BinTree BT ){ if(BT!=NULL){ PostorderTraversal(BT->Left); PostorderTraversal(BT->Right); printf(" %c",BT->Data); }}
4、广度优先
输出结果为:ABCDEF
代码为:
void LevelorderTraversal( BinTree BT ){ if(!BT)return ; int Maxsize=100;//同一时刻数组最大容量 BinTree* a=(BinTree*)malloc(sizeof(BinTree)*Maxsize); a[0]=BT; int left=-1,right=0; while(left!=right) { BinTree t=a[++left%Maxsize]; printf(" %c",t->Data); if(t->Left){a[++right%Maxsize]=t->Left;} if(t->Right){a[++right%Maxsize]=t->Right;} }}
0 0
- 二叉树的各种遍历方法
- 二叉树的各种遍历方法
- 二叉树的各种遍历
- 二叉树的各种遍历
- 二叉树的各种遍历
- 二叉树的各种遍历
- 二叉树的各种遍历
- 二叉树的各种遍历
- 二叉树的创建和各种遍历方法
- 二叉树各种遍历
- 二叉树各种遍历
- 二叉树各种遍历
- 二叉树的各种遍历,二叉树改链表,二叉树复习
- 二叉树的各种遍历【hao】
- 二叉树的各种遍历算法
- 遍历二叉树的各种实现
- 二叉树遍历的各种方式
- 二叉树的构建及各种遍历
- Unique Paths
- ubuntu14.04下快速安装搜狗输入法
- Oracle数据库面试练习题
- 微服务理论与实践(三)-微服务架构的基本能力和优缺点
- C++中vptr指针的存在
- 二叉树的各种遍历方法
- JavaWeb初级学习 之 JQuery-简介、选择器
- Sum of Two Integers
- mysql desc asc基本命令总结
- 做一个有自我要求的读者
- LeetCode 46. Permutations 解题报告
- Android事件分发<二>
- 学习C语言的一点感受
- win32主程序入口设置