当前课程知识点:数据结构(上) > 第五章 二叉树 > (a)树 > 05A-4 有序树
一系列的有根树
通过刚才那种方式
组合成一棵更大的树之后
相对于新的树根
此前各棵子树的树根就称作孩子
按整体的是它的孩子们
反过来 新的树根r
也就是这些节点的父亲
不难理解 在有根性的条件下
这种父与子之间的关系
可以毫不含糊的明确定义
然而接下来的问题是
如果形象地 同一父亲的所有孩子
彼此互称是兄弟sibling的话
那么它们之间的长幼关系
又如何确定呢?
这也是计算机科学所处理的树
与数学所讨论的树之间的
又一重大区别
也就是说 我们这里需要
在所有的兄弟之间定义某种长幼次序
任何一个节点r
所拥有的孩子的数目
也称作它的度数degree
那么在一棵树中
顶点的数目、各个顶点的度数
以及边的数目之间
又存在什么关系呢?
关于这一点
我们可以通过归纳证明
一个非常重要的结论
也就是说 任何一棵树中
所含的边数应该恰好等于
其中所有顶点的度数之和
同时也恰好等于顶点总数减1
这个结论之所以重要
并不在于它的细微之处
而是在于它告诉我们
任何一棵树中的边数
与其中顶点的数目是同阶的
也就是说 一棵树的总体规模
如果可以度量为其中的点数
再加上边数
那么从渐近的意义上讲
这个规模也是和其中的顶点数
或者是边数同阶的
也正因为这个原因
在此后我们相关的算法中
讨论到时间复杂度的时候
我们都是以顶点的数目n
作为对应的参照
好了
回到刚才参与构成这棵
更大的树的那些子树
它们拥有一个共同的父亲
所以反过来讲
它们彼此互称兄弟
sibling是再自然不过了
问题在于父与子之间的关系
按照刚才的定义是非常明确的
那么兄弟与兄弟之间的关系呢?
这一点非常重要
也可以说 这也是我们在计算机中实现
并且维护的树结构
与数学中所讨论的一般性的树
之间的又一区别
具体来说
我们要将同一个节点的所有孩子编号
使得它们具有这种意义上的某一个次序
凡是如此 在兄弟之间
也定义了明确次序的树
我们也称之为有序树
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)深度优先搜索--作业
-第六章 图--本章测验