当前课程知识点:数据结构(上) > 第五章 二叉树 > (e4)层次遍历 > 05E4-1 次序
同学们好
这一节我们介绍最后一种
典型的二叉树遍历算法
也就是层次遍历
回顾一下 在本章的开篇
我们就曾约定
我们讨论的都是所谓的有根有序树
也就是说 我们这里讨论的
任何一棵二叉树
都被指定了一个特殊的节点
我们称之为根节点
由此就可以在垂直方向
按照深度将所有节点划分为
若干个等价类
因此我们可以认为
所谓的有根性
其实对应的就是这样一个
垂直方向的次序
那么进一步地 位于同一深度
也属于同一等价类内部的
所有节点
又当如何定义次序呢?
我们介绍过
所有的同辈节点
的确 也可以分出次序
比如对于二叉树
完全可以通过左右的明确定义
给出同辈节点之间的相对次序
因此我们可以认为
所谓的有序
也恰好给出了
沿水平方向的一个次序
因此按照垂直方向和水平方向的次序
我们可以完全可以在所有的节点之间
定义一个整体的次序
并进而对它进行遍历
具体来说 我们将自高向低
而在每一层自左向右
逐一地访问树中的每一个节点
如此定义的遍历策略及过程
也就是我们这一节的主题:层次遍历
那么这样一个遍历策略
究竟应该如何具体的实现
并落实为代码呢?
为此我们又需要
使用什么样的数据结构呢?
回顾此前所介绍的三种典型遍历策略
无论是先序、中序 抑或是后序
都不能保证所有的节点
严格地按照深度次序
来接受访问
在这三种遍历策略中
都有后代先于祖先被访问的现象
也就是所谓的逆序
为此正如我们所看到的
在实现这些遍历策略的时候
我们无论是隐式的 还是显式的
都需要借助栈结构
而反过来 在层次遍历中
正如我们刚才所定义的
所有节点都将严格地按照深度次序
由高至低 接受访问
也就是说 这里严格地满足顺序性
因此我们不难理解
在这样一种场合
与栈完全对称的那种数据结构
也就是队列
将会大显身手
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)计算
--演示
--(a)计算--作业
-(b)计算模型
-(b)计算模型--作业
-(c)大O记号
-(c)大O记号--作业
-(d)算法分析
-(d)算法分析--作业
-(e)迭代与递归
-(e)迭代与递归--作业
-(xc)动态规划
-- 演示
-(xc)动态规划--作业
-本章测验--作业
-(a)接口与实现
--02A-5 复制
-(a)接口与实现--作业
-(b)可扩充向量
-(b)可扩充向量--作业
-(c)无序向量
--02C-1 概述
--02C-3 插入
--02C-6 查找
--02C-8 遍历
-(c)无序向量--作业
-(d1)有序向量:唯一化
-(d1)有序向量:唯一化--作业
-(d2)有序向量:二分查找
-(d2)有序向量:二分查找--作业
-(d3)有序向量:Fibonacci查找
-(d3)有序向量:Fibonacci查找--作业
-(d4)有序向量:二分查找(改进)
-(d4)有序向量:二分查找(改进)--作业
-(d5)有序向量:插值查找
-第二章 向量(下)--(d5)有序向量:插值查找
-(e)起泡排序
--02E-2 改进
--02E-3 反例
-(e)起泡排序--作业
-(f)归并排序
-(f)归并排序--作业
-本章测验--作业
-(a)接口与实现
--03A-4 实现
-(a)接口与实现--作业
-(b)无序列表
--03B-2 查找
-(b)无序列表--作业
-(c)有序列表
--03C-3 查找
-(c)有序列表--作业
-(d)选择排序
--03D-1 构思
--03D-2 实例
--03D-3 实现
--03D-4 推敲
--03D-6 性能
-(d)选择排序--作业
-(e)插入排序
--03E-1 经验
--03E-2 构思
--03E-3 对比
--03E-4 实例
--03E-5 实现
-(e)插入排序--作业
-(xd)习题辅导:LightHouse
-本章测验--作业
- (a)栈接口与实现
--04A-1 栈
--04A-2 实例
--04A-3 实现
- (a)栈接口与实现--作业
-(c1)栈应用:进制转换
-第四章 栈与队列--(c1)栈应用:进制转换
-(c2)栈应用:括号匹配
-(c2)栈应用:括号匹配--作业
-(c3)栈应用:栈混洗
-第四章 栈与队列--(c3)栈应用:栈混洗
-(c4)栈应用:中缀表达式求值
-(c4)栈应用:中缀表达式求值--作业
-(c5)栈应用:逆波兰表达式
-第四章 栈与队列--(c5)栈应用:逆波兰表达式
-(d)队列接口与实现
--04D-1 接口
--04D-2 实例
--04D-3 实现
-第四章 栈与队列--本章测验
-(a)树
--05A-1 动机
--05A-2 应用
-(a)树--作业
-(b)树的表示
--05B-2 父亲
--05B-3 孩子
-第五章 二叉树--(b)树的表示
-(c)二叉树
-(c)二叉树--作业
-(d)二叉树实现
-(d)二叉树实现--作业
-(e1)先序遍历
-(e1)先序遍历--作业
-(e2)中序遍历
-第五章 二叉树--(e2)中序遍历
-(e4)层次遍历
-第五章 二叉树--(e4)层次遍历
-(e5)重构
-(e5)重构--作业
-本章测验--作业
-(a)概述
-(a)概述--作业
-(b1)邻接矩阵
-(b1)邻接矩阵--作业
-(c)广度优先搜索
--06C-2 策略
--06C-3 实现
--06C-5 实例
-(c)广度优先搜索--作业
-(d)深度优先搜索
--06D-1 算法
--06D-2 框架
--06D-3 细节
-(d)深度优先搜索--作业
-第六章 图--本章测验