数据结构(c++语言版) 邓俊辉 第五章:二叉树学习笔记

5.1二叉树及其表示

树是由节点和边组成的。

1.有根树

树是由顶点(vertex)和边(edge)组成。树的每个顶点也叫节点(node)。

2.深度与层次

由树的连通性,每一节点与根都有一条路径相连:根据树的无环性,由根通往每个节点的路径必然唯一。

节点v的深度:每个节点到root的唯一通路所经过的边的数目,称作v的数目,记作depth(v)。

约定 depth(r) = 0,其中r表示根节点。

祖先:任一节点通往树根所经过的每个节点都叫做v的祖先(ancestor),v是他们的后代(descendant)。特别地,v的祖先和后代包括v本身。v本身以外的祖先/后代称为v的真祖先(proper ancestor)/真后代(proper descendant)。

父亲/孩子:u如果是v的祖先,且u比v高出一层。就称u是v的父亲。v是u的孩子。

度:v的孩子的总数,称作v的度数或者度(degree),记作deg(v)。

叶节点:无孩子的节点称为叶节点。(leaf node)。其余节点(包括根节点,叫做内部节点)。

子树:v的所有后代及其连边所组成树称作子树(subtree),记作subtree(v)。

3.高度

树T中所有节点深度最大值称作树的高度(height),记作height(H)。

不难理解,树的高度(height),是由其中某个叶节点的深度决定的,特别地,本书约定,仅含单个节点的树的高度为0,空树的高度为-1。

推而广之,任一节点v所对应子树subtree(v)的高度,亦称做该节点的高度,记作height(v)。特别地,全树的高度称作根节点的高度。即height(T) = height(r)。

5.1.2 二叉树

如图,二叉树的每个节点的度都不超过2。因此在二叉树中,每个节点的左右孩子都可以以左右区分------此时,亦称作有序二叉树(ordered binary tree)。特别地,不含一度节点的树,称做真二叉树(proper binary tree)。

5.1.3多叉树

一般地,树中各节点孩子数目不确定,每个节点孩子均不超过k个的有根树,称做k叉树。

(1)父节点表示法

(2)孩子节点表示法

(3)父节点+孩子节点表示法

相关推荐
I_belong_to_jesus10 小时前
C++关于分支预测的优化1
开发语言·c++·算法
Rabitebla11 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
Gary移动存储固件12 小时前
eMMC5.1协议中文学习讲解(6.6.17~6.6.22.4.6)
学习·ufs·emmc·nand·存储固件
一个天蝎座 白勺 程序猿12 小时前
别让收藏夹替你学习:我搭AI知识体系的完整方法,脚本直接拿去用
人工智能·学习·ai·ai学习
楚山之石13 小时前
【Nat Biomed Eng】Connectome 2.0 超高梯度扫描仪:500 mT/m 与 600 T/m/s 把活体人脑微观结构分辨推进到亚微米级
图像处理·学习·数据分析·mri
坤坤子吖15 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
码客-ygluu17 小时前
一个通用游戏数据服务器
c++·架构
another heaven17 小时前
【C/C++ Ranges 是零开销抽象吗?拆开管道、惰性求值和编译期膨胀】
c语言·开发语言·c++
YLCHUP19 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
LGL6030A19 小时前
Java学习历程31——初识Spring Boot
java·spring boot·学习