这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战
树的定义
树(tree)是由n(n>=0)个结点组成的有穷组合(D)与在D上关系的集合R构成的结构,称为T。
- n = 0时,T为空树 树形结构具有以下特点:
- ①任何非空树中有且仅有一个结点没有前驱节点,这个结点就是树的根节点
- ②除根节点之外,其余所有结点有且仅有一个直接前驱结点
- ③包括根结点在内,每个结点可以有多个直接后继结点
- ④树型结构是一种具有递归特征的数据结构
树的逻辑表示方法
- 树形表示法
- 文氏图表示法
- 凹入表示法
- 嵌套括号表示法
基本术语
结点的度:结点拥有的子树数目称为该结点的度。如图7.1中,A的度为3,C的度为2,X的度为1树的度:树中各结点的最大值被定义为该树的度(不是指对结点的度求和)。如图7.1中,树的度为3,因为树中数据信息为B的结点的度为3,不存在其他度超过3的结点。叶子结点:度为0的结点称为叶子结点或者终端结点,简称叶结点。叶结点没有子孙结点。图7.1中,结点K、L、F、G、H、M、N、J都是叶子结点分支结点:度不为0的结点称为分支结点或者非终端结点。图7.1中,除叶结点之外的结点都是分支结点。结点的层次:从根结点所在层开始,根结点为第1层,根结点的孩子结点为第2层...,若某结点在第i层,则其孩子结点(若存在的话)在第i + 1层。树的深度:树中结点的最大层次数被定义为该树的深度或者高度。图7.1中树的深度为4有序树:若树中结点子树的相对次序不能随意变换,或者说改变前后的树表示的不是同一个对象,则称该树为有序树。否则,称为无序树。森林:m(m>=0)棵不相交的树的集合被称为森林或者树林。对树中每个分支结点来说,其子树的集合就是一个森林。
树的性质
树的基本操作
- ① SETNULL(T) 建立一颗空树T
- ② ROOT(x)或ROOT(T) 求结点x所在树的根结点,或者求树T的根结点
- ③ PARENT(T, x) 求树T中结点x的双亲结点
- ④ CHILD(T, x, i) 求树T中结点x的第i个孩子结点
- ⑤ RIGHTSIBLING(T, x) 求树T中结点x右边的兄弟结点
- ⑥ INSERT(T, x, i, S) 把以S为根的树插入到树T中作为结点x的第i棵子树
- ⑦ DELETE(T, x, i) 删除树T中结点x的第i棵子树
- ⑧ TRAVERSE(T) 对一棵树进行遍历,即按照某个次序依次访问树中所有结点,每个结点仅被访问一次,得到一个由所有结点组成的序列