具有
个结点的有限集称为树。当
时称为空树;当
时,仅有一个特定的称为根的结点,其余结点可分为
个互不相交的有限集。
每一个集合本身又是一棵树,称为根的子树。
树的特点:树是非线性结构,数据元素具有"一对多"的逻辑关系;树中的每个元素最多有一个前驱结点,有多个后继结点。
树的结点
- 树的每一个数据元素称为结点,如上图中的 都是结点。
- 非空树中无前驱结点的结点称为根结点,如上图中的 为树的根结点。
- 根结点以外的分支结点称为内部结点。
- 结点的子树的根称为该结点的孩子结点,该结点称为孩子结点的父结点。
- 同一个父结点的孩子结点之间称为兄弟结点。
- 从根到某个结点的所经过的分支上的所有结点称为结点的祖先。
- 而以某结点为根的子树中的任一结点称为该结点的子孙。
- 没有任何孩子结点的结点称为叶子结点。
- 双亲在同一层的结点互为堂兄。
结点的度和层次
- 结点拥有的子树数称为该结点的度。
- 树内各结点的度的最大值称为树的度。
- 度不为 0 的分支结点称为非终端结点。
- 层次:从根开始计算,根为第一层,其孩子为第二层…若某结点在 层,则其孩子结点在 层。树中任一结点的层次等于其双亲结点的层次加 1。
- 树中结点的最大层次称为树的深度。
有序树、无序树
- 树中结点的各子树从左到右有次序,这样的树称为有序树。
- 树中结点的各子树无次序,这样的树称为无序树。
由
棵互不相交的树的集合称为森林。
一棵树可以看成一个特殊的森林,而森林中的各子树加上一个双亲结点,森林便变成了树。
树与线性结构的比较
线性结构的元素之间具有一对一的关系:第一个元素无前驱,最后一个元素无后继,其他元素仅有一个前驱一个后继。
树的元素之间具有一对多的关系:根结点无双亲,叶子结点无孩子,其他结点仅一个双亲多个孩子。
参考
- 《数据结构(C语言版)》 严魏敏、吴伟民著
- 《数据结构(第3版)》 刘大有等著