当前课程知识点:数据结构(上) > 第五章 二叉树 > (c)二叉树 > 05C-1 二叉树
同学们好
我们这一节介绍树的一种特殊
但又不失代表性的特例
也就是二叉树
所谓的二叉树binary tree
也就是其中每个节点的度数
不超过2的
这样一种树
最多两个分支 两叉
所以叫二叉树
因此在任何一个局部
每一个节点最多只有两个孩子
所以不妨以左和右区分它们
同样地 对应的两棵子树
也可以以左、右相称
我们称作相对于某个节点r而言的
左孩子、左子树
或者相对于r而言的
右孩子和右子树
请注意 这里我们实际上
已经隐含了树的有序性
一般来说 我们的习惯是
认为左在先 右在后
相应地 我们也可以将
每一个节点的左孩子
确实画在它的左边
将它的右孩子以及它的右后代
也都画在这个节点的右侧
不难看出
这样一种所谓的二叉树
肯定是整个树的一种特例
但是饶有趣味的是 我们很快就会看到
在有根性以及有序性
能够保证的前提下
二叉树却足以描述所有的树
既然在这样的树中
每个节点的出度至多为2
此前我们按照深度
对所有的节点划分的等价类
从规模上看 就构成了一个
以2为倍数的几何级数
相应地 第k个等价类
也就是所有深度为k的节点
也自然不会超过2的k次方个
而整个树的总体规模呢
也自然满足这样的一个上界
也就是最后一个等价类
最后一层的两倍
当然反过来 这个下界
也是比较好理解的
因为对于一棵高度为h的树来说
至少在每一层上有一个节点
果真如此的话
这棵树也就退化成了
由每一层为1的那个节点
所构成的一个单链条
反过来 除了叶子节点以外
如果所有的节点的度数都是2
那么每一个等价类
都会达到它的最大的饱和状态
从而构成一棵特殊的树
我们称之为满树
比如下方以h为根的这样一棵树
总体的就构成一棵满树
我们可以看到满树的特征
就是在同样的高度下
它可以使得其中的顶点数达到最大
也就是饱和状态
满树 full binary tree
由此也可见
一棵二叉树在横向上的宽度
与它在纵向上的高度
是呈一个指数的关系的
宽度是高度的指数
我们讲过指数意味着爆炸
意味着剧烈的增长
所以如果节点的总数固定
那么宽度大致与它还相当
但是高度却会增长的非常的缓慢
反过来 呈一个对数的形式
所以我们希望这个图景
大家应该能记下来
也就是说 对于一棵二叉树而言
它非常倾向于涨宽
它的涨宽的速度更快
就像一只兔子一样 跑得很快
而它的高度呢
如果我们控制得当的话
会增长的异常的缓慢
相对而言 就像一只乌龟一样
兔子和乌龟速度有天壤之别
这也是我们稍后
引入二叉搜索树的重要理论基础
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)深度优先搜索--作业
-第六章 图--本章测验