数据结构之树的基本概念

236 阅读3分钟

一、树的定义

递归定义:

一个树(或树形)是一个有限非空的节点集合T,其中: 有一个特别标出的被称为该树(或树形)之根(root)的节点; 其余节点(根除外)被分成m≥0个不相交的集合T1, T2, …, Tm,且T1, T2, …, Tm又都是树(或树形)。这些树(或树形)T1, T2, …, Tm被称作root(T)的子树(或子树形)。 非递归定义:

树是包含n(n≥1)个节点且满足如下条件的有限集合: 存在一个唯一的节点v0,它没有前驱节点,称为树的根(或根节点); 其余节点(除了根节点)都有且仅有一个前驱节点; 任何节点都可能有多个(≤n-1)后继节点,称之为该节点的子节点;若某节点没有后继节点,则称之为叶节点; 任一非根节点vk都有且仅有一条从v0到该节点的节点序列(或曰路径)v0-v1-…-vk。

二、树的基本要素

1、节点(Node):

树的基本单位,包含一个数据元素及若干指向其子节点的分支。

节点分类: 1、根节点(Root):树的顶端节点,没有父节点。 2、叶节点(Leaf):没有子节点的节点。 3、内部节点(Internal Node):至少有一个子节点的节点。 4、子节点(Child)和父节点(Parent):节点的直接下属节点称为子节点,直接上属节点称为父节点。 5、兄弟节点(Sibling):具有相同父节点的节点互为兄弟。

2、边(Edge):

连接两个节点的线,表示节点之间的父子关系。

3、路径(Path):

从一个节点到另一个节点经过的节点序列。

4、树的度(Degree):

树中节点的最大度数,即树中任意节点的最大子节点数。

5、节点的度(Degree of a Node):

节点的子树个数。

6、层次(Level):

节点所在的层次,从根开始定义,根为第1层,根的子节点为第2层,依次类推。

7、树的深度(Depth)或高度(Height):

树中节点的最大层次。

三、树的性质

1、非空树中,n个节点共有n-1条边。

2、度为m的树中,第i层最多有m^(i-1)个节点(i≥1)。

3、深度为h的m叉树最多有(m^h - 1)/(m - 1)个节点(m > 1)。

4、具有n个节点的完全二叉树的深度为⌊log₂n⌋ + 1。

5、n个节点的树至少有⌈log₂(n + 1)⌉层。

四、树的类型

1、二叉树(Binary Tree): 每个节点最多有两个子树的树结构。 特殊类型包括:完全二叉树、满二叉树、平衡二叉树(如AVL树、红黑树)、二叉搜索树等。

2、多叉树(Multiway Tree): 每个节点可以有多个子节点的树结构。

3、森林(Forest): 多棵互不相交的树的集合。

五、树的应用

1、文件系统: 计算机的文件系统通常以树的形式组织文件和目录。

2、数据库索引: 数据库系统使用树结构(如B树、B+树)来加速数据检索操作。

3、XML和JSON解析: 树结构常用于解析和表示XML和JSON数据。

4、编程语言的抽象语法树(AST): 在编程语言编译器和解释器中,AST用于表示源代码的语法结构。

5、家谱和组织结构: 家谱通常以树的形式表示,组织结构中的层次性管理也可以用树结构表示。

6、网络路由: 路由表通常使用树结构来确定数据包的传输路径。