算法中“树”的基本概念 (图)

本文介绍了树的基本概念,包括节点、根节点、子树、前驱后继关系,以及度、层次和森林的定义。重点讲解了有序树与无序树的区别,以及如何在树中进行查找。适合初学者理解数据结构中的关键概念。

在学习树中的查找方法之前,首先要了解“树”这种数据结构。树是一种由 n 个元素组成的集合,元素间具有层次关系。如图 1 所示,这种数据结构叫作“树”,是因为它就像一棵倒过来的树,茂密的叶子在下面,而根在最上面。

当 n=0 时,树被称作空树。当 n>0 时,树被称作非空树。

对于非空树,最基本的概念有三个:

  1. 树中的每个元素被称为节点;
  2. 树最顶层的节点称作根节点;比当前节点深度小但与当前节点之间相连的节点称为节点的前驱;每棵树只有一个特定的根节点,它没有直接前驱;
  3. 当 n>1 时,根节点及其之下的所有节点构成原树,而根节点之外的节点可以被划分为 m 个互不相交的有限集 T1, T2,…, Tm。每个集合 Ti 本身也是一棵树,被称作根的子树。

例如,图 2 中的这棵树可以被分为根节点和三个互不相交的子集,T1={2,5,9,10},T2={3,6}, T3={4,7,8,11}。T1、T2、T3 都是根的子树,它们自己本身也是一棵树。

 

所以,也可以定义树为由一个根节点和若干子树构成的数据结构,如图 3 所示。

再换句话说,当从根节点以外的一个节点开始往下遍历时,能遍历到的所有节点以及这个初始节点,就是初始节点的父亲节点的一棵子树。而这个初始节点被称为子树的根。

这里的前驱后继关系也是节点之间最重要的一种关系——父子关系。树中任意两个相连的节点之间,一个必然比另一个高一层。处于较高一层的节点是另一个节点的父亲节点;相反地,处于较低一层的节点是另一个节点的孩子节点。

例如,图 4 中编号为 2 的节点就是 5 号和 6 号节点的父亲节点,而 2、3、4 号节点都是 1 号节点的孩子节点。2、5、6 号节点构成了 1 号节点的一棵子树,3、7、8 号节点同样构成了 1 号节点的一棵子树。而 2 号节点的两棵子树即为 5 号节点和 6 号节点。

在一棵树中,所有的非根节点有且只有一个父亲节点。

另外,具有相同父亲节点的两个节点称为兄弟节点。比如 5 和 6,7 和 8,它们是两对不同的兄弟节点。从根节点到树中某一节点的所经分支上所有的节点,都被称为这个节点的祖先节点。在以一个节点为根的子树中,任意一个节点都是根的子孙节点。而所有没有孩子节点的节点,称为叶子节点。

在树中,一个节点连接的孩子节点数量称为度。比如说,图 4 中 1 号节点的度是 3,2 号节点的度是 2。相应地,所有的叶子节点的度都为 0。而在一棵树中,所有节点里最大的度称为树的度。图 4 中,这棵树的度就是 3。

一个节点的层次从根开始定义起。根节点是第1层,往下层层递增。树的高度即为树中节点的最大层次。图 5 中,树的高度为3。

 

 

 最后,若干棵互不重合的树构成的集合,称作森林。对于树中的每个节点而言,其所有子树的集合就为森林。而树还分为两种,有序树和无序树。有序树中的节点有顺序关系,不能轻易改变其中的排列;而无序树中的节点没有顺序关系,也称作自由树。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值