树结构是一种典型的非线性结构,非线性就意味着数据结构中至少拥有两个直接前驱或后继元素
概念
树
树是由 n(n>=0)个节点组成的有穷集合 D 与 D 上的关系集合 R 构成的集合,通常用 T 来表示,再此定义上,树满足以下三个条件
- n=0 时,该节点集合为空,该树被称之为空树
- 在任意非空树中,有且只有一个根节点 root
- 当 n>1 时,除根节点外其余节点可以分为 m 个不相交的自己,每一个这样的子集本身又是一棵树,称为根节点的子树
树的定义是一个递归定义。
树的表示
树可以用树的形状或文氏图表示
节点的度
节点拥有的子树的数目称之为节点度,直观来说就是每个节点的直接子节点个数
树的度
树中各节点度的最大的值称之为树的度
分支节点
度不为 0 的节点称之为分支节点或普通节点,有的称之为非终端节点
节点的层次
从树的根节点开始,根节点为第1层,根节点的子节点是第2层,依次类推
树的深度
树中节点的最大层次称之书的高度或深度
森林
n(n>=0) 个不相交的树称之为森林
叶子节点
度为 0 的节点称之为叶子节点
特性
- 非空树的节点总数等于树中所有节点的度之和再加 1 (1其实是根节点)
- 深度为 k 的非空树第 i 层最多有 k^i-1 个节点 (证明?)
- 深度为 h 的 k 叉树最多有
- 具有 n 个节点的 k 叉树的最小深度
树的实践和应用
问题【1】
树和森林的转换