【树的定义】
树,是
对于任意一棵非空树,其满足:
- 有且仅有一个特定的根结点
时,其余结点可分为 个互不相交的有限集合 ,每个集合本身又是一棵树,被称为根结点的子树
树具有以下特点:
- 是一种递归的数据结构
- 根结点没有前驱,除根结点外的所有结点有且仅有一个前驱
- 所有的结点可以有零到多个后继
个结点的树有 条边
【基本术语】
上端结点为下端结点的父结点(parent node),下端结点为上端结点的子结点(children node),同一个父结点的多个子结点互称兄弟结点(brother node),同一层的结点互称堂兄弟结点(cousin node)
从根结点到某个子结点所经过的所有结点称为这个子结点的祖先(ancestor),以某个结点为根的子树中的任一结点都是该结点的子孙(descendant)
一个结点的孩子个数,称为结点的度(degree),树中各结点的度的最大值称为这棵树的度(tree degree)
度为
连接两个相关联的结点的线段称为树枝(branch)
对于树中任意两个不同的结点,如果从一个结点出发,自上而下沿着树中连着结点的线段能到达另一结点,则称它们之间存在着一条唯一的路径(path),路径上经过的边数称为路径长度(path length),从根结点出发,到树中的其余结点一定存在着一条路径,不同子树上的结点之间不存在路径。
若一棵树中结点的各子树从左到右是有次序的,即若交换结点各子树的相对位置会构成不同的树,则称为有序树(ordered tree),反之,交换结点各子树的相对位置后为同一棵树,则为无序树(unordered tree)
规定一棵树的根结点的层次(level)为
一棵树中所有的结点的层次的最大值称为树的深度(depth)
将树中结点按照从上层到下层,同层中从左到右的次序依次从 1 开始编号,这种编号方式称为层序编号(level code),通过层序编号可以将一棵树变为线性序列
以下图为例:
这棵树的根结点为:
对于根结点
对于结点
根结点
对于结点
【树的性质】
树具有以下最基本的性质:
- 树中结点数 = 总度数
- 度为
的树中第 层上最多有 个结点 - 度为
的树,若高度为 ,最少有 个结点
对于
- 高度为
的 叉树最多有 个结点,最少有 个结点 个结点的 叉树最小高度为
度为
度为 |
|
---|---|
任意结点的度 |
任意结点的度 |
至少一个结点度 |
允许所有结点的度 |
一定是非空树,至少有 |
可以是空树 |
子树不要求有序 | 子树是有序的,次序不能任意颠倒 |
Gitalking ...