网站首页 > 文章精选 正文
树和森林都有两种遍历方法,分别为先序遍历和后序遍历。但对于森林的后序遍历,有些教材叫中序遍历,其实它们是同一种遍历方法,只是叫法不同。而二叉树的遍历方式有先序遍历,中序遍历,后序遍历和层次遍历。树或森林转化为二叉树后,树或森林的先序遍历对应二叉树的先序遍历,树或森林的后序遍历对应二叉树的中序遍历。
一、树的三种存储方式
(1)双亲表示法(一般按层序存储,实际是一个静态链表)
(2)孩子链表表示法(与图的邻接表极为相似)
(3)孩子-兄弟存储方表示法
二、二叉树的深度优先遍历和广度优先遍历
分别相当于二叉树按照先序遍历和层次遍历的方法进行遍历
三、算法代码
(1)二叉树层次遍历算法
void level(BTnode *p) {
int font,rear;
BTnode *que[maxSize];
front=rear=0;
BTnode *q;
if(p!=NULL) {
rear=(rear+1)%maxSize;
que[rear]=p;
while(front !=rear) {
front=(front+1)%maxSize;
q=que[front];
Visit(q);
if(q->lchild !=NULL) {
rear=(rear+1)%maxSize;
que[rear]=q->lchild;
}
if(q->rchild!=NULL) {
rear=(rear+1)%maxSize;
que[rear]=q->rchild;
}
}
}
}
(2)二叉树中序遍历算法
void inorderNonrecursion(BTnode *bt) {
if(bt !=NNLL) {
BTNode *stack[maxSize];
int top=-1;
BTNode *p;
p=bt;
while(top !=-1||p !=NULL) {
while(top !=NULL) {
Stack[++top]=p;
p=p->lchild;
}
if(rop !=-1) {
p=stack[top–];
Visit(p);
p=p->rchild;
}
}
}
}
- 上一篇: 二叉树刷题总结:二叉树的遍历方式
- 下一篇: 图的遍历(DFS,BFS)
猜你喜欢
- 2025-01-07 遍历二叉树的递归与非递归实现
- 2025-01-07 二叉树遍历算法总结:前序中序后序遍历
- 2025-01-07 最简单的爬虫实现
- 2025-01-07 用了那么久的 Lombok,你知道它的原理么?
- 2025-01-07 第一篇 静态代码检查工具
- 2025-01-07 小学六年级学生写的“线段树”解析,厉害了
- 2025-01-07 二叉树的四种遍历(递归与非递归)
- 2025-01-07 深搜DFS & 广搜BFS #学习心得
- 2025-01-07 「西瓜哥说算法」从前序与中序遍历序列构造二叉树
- 2025-01-07 二叉树有几种遍历方式?
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)