当前课程知识点:数据结构(上) >  第五章 二叉树 >  (a)树 >  05A-7 深度+层次

返回《数据结构(上)》慕课在线视频课程列表

05A-7 深度+层次在线视频

05A-7 深度+层次

下一节:05B-1 表示法

返回《数据结构(上)》慕课在线视频列表

05A-7 深度+层次课程教案、知识点、字幕

以上我们看到,对于任何一个节点而言

它所对应的那条通往根的路径

必然是唯一的

反之

再按照刚才的递归嵌套形式

构成出它所属于的那棵大树的过程中

任何一个节点也必将在某一个时刻

对应于以它为根的那棵子树

既然这三个概念就是同一件事情

所以在不致引起歧义的情况下

我们可以往往将它们混淆起来

彼此指代

也就是说the path from root to v

可以直接简化为the path v

而the subtree rooted at v

也可以直接地简化为the subtree v

既然任何一个节点都会以它所对应的

那条通路的长度作为指标

而这样一个指标也很好地体现了

任何一个节点v

从根节点开始向下深入的程度

因此我们也将v所对应的

这条路径的长度 也就是它的指标

形象地称作点v在这棵树中的深度

任何一个顶点

也因此具有了一个深度的指标

那么继续考察任何一个顶点

所对应的这条通路

相对于某一个特定的顶点

在它所对应的那条通路上

如果还存在其它的点

那么这个点

就称作是它的祖先ancestor

反过来呢

这个点也就称作是它的祖先的后代

descendent

当然 我们这里一般所定义的祖先和后代

都是包括顶点自身的

如果需要将自身排除掉

那么我们更严格地

也称其为真祖先或者是真后代

当然 在不致引起歧义的情况下

我们也往往会将真字省略掉

不难看出 对于任何一个节点而言

在它以上的任何一个层次上

它必然只有唯一的一个祖先

而反过来 对于任何一个节点而言

它在任何一个层次上的后代

却未必是唯一的

比照我们此前的向量和列表等线性结构

如果祖先对应于前驱

而后代对应于后继

那我们就会发现

前驱的唯一性 在这个意义上讲

依然是保持的

但是后继的唯一性却不再保持

因此从这个意义上讲

也应该将树结构称作是半线性结构

稍后我们会看到 对于图结构而言

这两条唯一性都是不能满足的

所以我们直接地称它为非线性结构

也是再合适不过的了

当然

全树的根节点

也应该是任意节点的祖先

或者说是它们的公共祖先

它所对应的那条路径的长度为零

所以我们说它所对应的深度

也自然就是零

树根节点没有祖先

而反过来 有些节点也会没有后代

那么这样一类节点

我们也形象地称之为叶节点

或者简称为叶子

请注意 在树中叶子节点必然是存在的

否则的话 我们沿着深度

不断地下行

总能够前进

这就会得出一个很荒诞的结论

也就是说 这棵树中

将包含无穷个节点

既然节点的数目有限

那么有限集中必然存在最值

我们考虑其中的最大者

也就是形象地来说 其中最深的那个节点

当然这个节点必然是一批叶子

在这样一个图中

叶子节点应该出现在这样的位置

而这种叶子节点

所对应的那个最大的深度

我们也形象地称之为这棵树的高度

当然树的高度这一概念

也可以推广至其中的任何一棵子树

如此定义的子树高度

也称作它的根节点的高度

所以任何一棵子树的高度

就是它的根节点的高度

所以反过来 全树的高度也可以当作是

全树根节点的高度

这几个概念比较容易混淆

所以我建议同学们脑子里

记下我们这里所绘的这张图

你就很容易搞清楚什么叫作全树的高度

子树的高度

以及其中任何一个节点

包括根节点的高度

需要特别说明的是

对于退化的树

也就是只有单个节点的

这样一棵树

不难发现

它的高度应该是零

那么再进一步的呢?

一个节点都不包含的树呢?

也就是我们所谓的空树呢?

为了一致起见

我们不妨将它的高度取作是-1

这一点现在你还不容易理解

稍后我们就会发现

它是非常自然的一个设定

现在我们回过头来观察

树中的任何一个一般性的节点v

按照我们刚才的介绍

任何这样的一个点

都既有深度的指标

同时也有高度的指标

那么我们也不难证明这样一个事实

也就是任何一个节点的高度

与深度之和绝对不会超过全树的高度

在我们所建议的这幅图中

也就是说

对于任何的

这样一个顶点

它的深度与它的高度之和

不会超过全树的高度

从图中非常好理解

尽管我们在此把严格的证明省略掉了

那么有一点倒是希望大家

在课后进一步思考的

也就是说 这个不等号

在什么时候取等号?

它的条件是什么?

你所给的条件是否是充要条件?

数据结构(上)课程列表:

第零章

-选课之前

--写在选课之前

--宣传片

-考核方式

--考核方式

-OJ系统说明

--关于OJ

--1-注册与登录

--2-界面与选课

--3-提交测试

-关于课程教材与讲义

--课程教材与讲义

-关于讨论区

--关于讨论区

-微信平台

--html

-PA晋级申请

--PA晋级

--MOOC --> THU 晋级申请专区

--THU --> CST 晋级申请专区

--编程作业不过瘾?且来清华试比高!

第一章 绪论(上)

-(a)计算

--01-A-1: 计算

--01a-2: 绳索计算机

--01a-3: 尺规计算机

--01a-4: 算法

--01a-5 : 有穷性

--演示

--01a-6 : 好算法

--(a)计算--作业

-(b)计算模型

--01b-1: 性能测度

--01b-2: 问题规模

--01b-3: 最坏情况

--01b-4: 理想模型

--01b-5: 图灵机

--01b-6: 图灵机实例

--01b-7: RAM模型

--01b-8: RAM实例

-(b)计算模型--作业

-(c)大O记号

--01c-1: 主流长远

--01c-2: 大O记号

--01c-3: 高效解

--01c-4 : 有效解

--01c-5 : 难解

--01c-6: 2−Subset

--01c-7: 增长速度

-(c)大O记号--作业

第一章 绪论(下)

-(d)算法分析

--01d-1: 算法分析

--01d-2: 级数

--01d-3: 循环

--01d-4: 实例:非极端元素+起泡排序

--01d-5: 正确性的证明

--01d-6: 封底估算-1

--01d-7: 封底估算-2

-(d)算法分析--作业

-(e)迭代与递归

--01-E-1: 迭代与递归

--01-E-2: 减而治之

--01-E-3: 递归跟踪

--01-E-4: 递推方程

--01-E-5: 数组倒置

--01-E-6: 分而治之

--01-E-7: 二分递归:数组求和

--01E-8 二分递归:Max2

--01E-09: Max2:二分递归

-(e)迭代与递归--作业

-(xc)动态规划

--01XC-1: 动态规划

--01XC-2: Fib():递推方程

--01XC-3: Fib():封底估算

--01XC-4: Fib():递归跟踪

--01XC-5: Fib():迭代

--01XC-6: 最长公共子序列

-- 演示

--01XC-7: LCS:递归

--01XC-8: LCS:理解

--01XC-9: LCS:复杂度

--01XC-A: LCS:动态规划

-(xc)动态规划--作业

-本章测验--作业

第二章 向量(上)

-(a)接口与实现

--02A-1 接口与实现

--02A-2 向量ADT

--02A-3 接口操作实例

--02A-4 构造与析构

--02A-5 复制

-(a)接口与实现--作业

-(b)可扩充向量

--02B-1 可扩充向量

--02B-2 动态空间管理

--02B-3 递增式扩容

--02B-4 加倍式扩容

--02B-5 分摊复杂度

-(b)可扩充向量--作业

-(c)无序向量

--02C-1 概述

--02C-2: 循秩访问

--02C-3 插入

--02C-4 区间删除

--02C-5 单元素删除

--02C-6 查找

--02C-7 唯一化

--02C-8 遍历

-(c)无序向量--作业

-(d1)有序向量:唯一化

--02D1-1 有序性

--02D1-2 唯一化(低效版)

--02D1-3 复杂度(低效版)

--02D1-4 唯一化(高效版)

--02D1-5 实例与分析(高效版)

-(d1)有序向量:唯一化--作业

-(d2)有序向量:二分查找

--02D2-1 概述

--02D2-2 接口

--02D2-3 语义

--02D2-4 原理

--02D2-5 实现

--02D2-6 实例

--02D2-7 查找长度

-(d2)有序向量:二分查找--作业

第二章 向量(下)

-(d3)有序向量:Fibonacci查找

--02D3-1 构思

--02D3-2 实现

--02D3-3 实例

--02D3-4 最优性

-(d3)有序向量:Fibonacci查找--作业

-(d4)有序向量:二分查找(改进)

--02D4-1 构思

--02D4-2 版本B

--02D4-3 语义

--02D4-4 版本C

--02D4-5 正确性

-(d4)有序向量:二分查找(改进)--作业

-(d5)有序向量:插值查找

--02D5-1 原理

--02D5-2 实例

--02D5-3 性能分析

--02D5-4 字宽折半

--02D5-5 综合对比

-第二章 向量(下)--(d5)有序向量:插值查找

-(e)起泡排序

--02 E-1 构思

--02E-2 改进

--02E-3 反例

--02E-4 再改进

--02E-5 综合评价

-(e)起泡排序--作业

-(f)归并排序

--02F-1 归并排序:构思

--02F-2 归并排序:主算法

--02F-3 二路归并:实例

--02F-4 二路归并:实现

--02F-5 二路归并:正确性

--02F-6 归并排序:性能分析

-(f)归并排序--作业

-本章测验--作业

第三章 列表

-(a)接口与实现

--03A-1 从静态到动态

--03A-2 从向量到列表

--03A-3 从秩到位置

--03A-4 实现

-(a)接口与实现--作业

-(b)无序列表

--03B-1 循秩访问

--03B-2 查找

--03B-3 插入与复制

--03B-4 删除与析构

--03B-5 唯一化

-(b)无序列表--作业

-(c)有序列表

--03C-1 唯一化·构思

--03C-2 唯一化·实现

--03C-3 查找

-(c)有序列表--作业

-(d)选择排序

--03D-1 构思

--03D-2 实例

--03D-3 实现

--03D-4 推敲

--03D-5 selectMax()

--03D-6 性能

-(d)选择排序--作业

-(e)插入排序

--03E-1 经验

--03E-2 构思

--03E-3 对比

--03E-4 实例

--03E-5 实现

--03E-6 性能分析

--03E-7 平均性能

--03E-8 逆序对

-(e)插入排序--作业

-(xd)习题辅导:LightHouse

--03X D 习题辅导:LightHouse

-本章测验--作业

第四章 栈与队列

- (a)栈接口与实现

--04A-1 栈

--04A-2 实例

--04A-3 实现

- (a)栈接口与实现--作业

-(c1)栈应用:进制转换

--04C1-1 应用

--04C1-2 算法

--04C1-3 实现

-第四章 栈与队列--(c1)栈应用:进制转换

-(c2)栈应用:括号匹配

--04C2-1 实例

--04C2-2 尝试

--04C2-3 构思

--04C2-4 实现

--04C2-5 反思

--04C2-6 拓展

-(c2)栈应用:括号匹配--作业

-(c3)栈应用:栈混洗

--04C3-1 混洗

--04C3-2 计数

--04C3-3 甄别

--04C3-4 算法

--04C3-5 括号

-第四章 栈与队列--(c3)栈应用:栈混洗

-(c4)栈应用:中缀表达式求值

--04C4-1 把玩

--04C4-2 构思

--04C4-3 实例

--04C4-4 算法框架

--04C4-5 算法细节

--04C4−6A 实例A

--04C4−6B 实例B

--04C4−6C 实例C

--04C4-6D 实例D

-(c4)栈应用:中缀表达式求值--作业

-(c5)栈应用:逆波兰表达式

--04C5-1 简化

--04C5-2 体验

--04C5-3 手工

--04C5-4 算法

-第四章 栈与队列--(c5)栈应用:逆波兰表达式

-(d)队列接口与实现

--04D-1 接口

--04D-2 实例

--04D-3 实现

-第四章 栈与队列--本章测验

第五章 二叉树

-(a)树

--05A-1 动机

--05A-2 应用

--05A-3 有根树

--05A-4 有序树

--05A-5 路径+环路

--05A-6 连通+无环

--05A-7 深度+层次

-(a)树--作业

-(b)树的表示

--05B-1 表示法

--05B-2 父亲

--05B-3 孩子

--05B-4 父亲+孩子

--05B-5 长子+兄弟

-第五章 二叉树--(b)树的表示

-(c)二叉树

--05C-1 二叉树

--05C-2 真二叉树

--05C-3 描述多叉树

-(c)二叉树--作业

-(d)二叉树实现

--05D-1 BinNode类

--05D-2 BinNode接口

--05D-3 BinTree类

--05D-4 高度更新

--05D-5 节点插入

-(d)二叉树实现--作业

-(e1)先序遍历

--05E1-1 转化策略

--05E1-2 遍历规则

--05E1-3 递归实现

--05E1-4 迭代实现(1)

--05E1-5 实例

--05E1-6 新思路

--05E1-7 新构思

--05E1-8 迭代实现(2)

--05E1-9 实例

-(e1)先序遍历--作业

-(e2)中序遍历

--05E2-1 递归

--05E2-2 观察

--05E2-3 思路

--05E2-4 构思

--05E2-5 实现

--05E2-6 实例

--05E2-7 分摊分析

-第五章 二叉树--(e2)中序遍历

-(e4)层次遍历

--05E4-1 次序

--05E4-2 实现

--05E4-3 实例

-第五章 二叉树--(e4)层次遍历

-(e5)重构

--05E5-1 遍历序列

--05E5-2 (先序|后序)+中序

--05E5-3 (先序+后序)x真

-(e5)重构--作业

-本章测验--作业

第六章 图

-(a)概述

--06A-1 邻接+关联

--06A-2 无向+有向

--06A-3 路径+环路

-(a)概述--作业

-(b1)邻接矩阵

--06B1-1 接口

--06B1-2 邻接矩阵+关联矩阵

--06B1-3 实例

--06B1-4 顶点和边

--06B1-5 邻接矩阵

--06B1-6 顶点静态操作

--06B1-7 边操作

--06B1-8 顶点动态操作

--06B1-9 综合评价

-(b1)邻接矩阵--作业

-(c)广度优先搜索

--06C-1 化繁为简

--06C-2 策略

--06C-3 实现

--06C-4 可能情况

--06C-5 实例

--06C-6 多连通

--06C-7 复杂度

--06C-8 最短路径

-(c)广度优先搜索--作业

-(d)深度优先搜索

--06D-1 算法

--06D-2 框架

--06D-3 细节

--06D-4 无向图

--06D-5 有向图

--06D-6 多可达域

--06D-7 嵌套引理

-(d)深度优先搜索--作业

-第六章 图--本章测验

05A-7 深度+层次笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。