树的简介及存储结构

59 阅读4分钟

这是我参与「掘金日新计划 · 8 月更文挑战」的第24天,点击查看活动详情


定义

树是一种重要的非线性的数据结构,直观地看,它是数据元素(在数中称为节点)按分支关系组织起来的结构,很像自然界中的数那样。

树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。

一棵树(tree)是由n(n>0)个元素组成的有限集合,当n=0时称为空树。在任意一颗非空树种:有且仅有一个特定的称为根(root)的节点,(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,...,Tm,其中每个集合本身又是一个棵树,并且称为根数的子树。

基本概念

  • 度:树的度——也即是宽度,简单地说,就是结点的分支数。以组成该树各结点中最大的度作为该树的度,其度为3;树中度为零的结点称为叶结点或终端结点。树中度不为零的结点称为分枝结点或非终端结点。除根结点外的分枝结点统称为内部结点。
  • 深度:树的深度——组成该树各结点的最大层次,如上图,其深度为4;
  • 层次:根结点的层次为1,其他结点的层次等于它的父结点的层次数加1.
  • 路径:对于一棵子树中的任意两个不同的结点,如果从一个结点出发,按层次自上而下沿着一个个树枝能到达另一结点,称它们之间存在着一条路径。可用路径所经过的结点序列表示路径,路径的长度等于路径上的结点个数减

树的相关用语:

  1. 结点(Node):表示树中的数据元素,由数据项和数据元素之间的关系组成。在图中,共有10个结点。
  2. 结点的度(Degree of Node):结点所拥有的子树的个数,在图中,结点A的度为3。
  3. 树的度(Degree of Tree):树中各结点度的最大值。在图5.1中,树的度为3。
  4. 叶子结点(Leaf Node):度为0的结点,也叫终端结点。在图5.1中,结点E、F、G、H、I、J都是叶子结点。
  5. 分支结点(Branch Node):度不为0的结点,也叫非终端结点或内部结点。在图5.1中,结点A、B、C、D是分支结点。
  6. 孩子(Child):结点子树的根。在图中,结点B、C、D是结点A的孩子。
  7. 双亲(Parent):结点的上层结点叫该结点的双亲。在图中,结点B、C、D的双亲是结点A。
  8. 祖先(Ancestor):从根到该结点所经分支上的所有结点。在图中,结点E的祖先是A和B。
  9. 子孙(Descendant):以某结点为根的子树中的任一结点。在图中,除A之外的所有结点都是A的子孙。
  10. 兄弟(Brother):同一双亲的孩子。在图5.1中,结点B、C、D互为兄弟。
  11. 结点的层次(Level of Node):从根结点到树中某结点所经路径上的分支数称为该结点的层次。根结点的层次规定为1,其余结点的层次等于其双亲结点的层次加1。
  12. 堂兄弟(Sibling):同一层的双亲不同的结点。在图中,G和H互为堂兄弟。
  13. 树的深度(Depth of Tree):树中结点的最大层次数。在图5.1中,树的深度为3。
  14. 无序树(Unordered Tree):树中任意一个结点的各孩子结点之间的次序构成无关紧要的树。通常树指无序树。
  15. 有序树(Ordered Tree):树中任意一个结点的各孩子结点有严格排列次序的树。二叉树是有序树,因为二叉树中每个孩子结点都确切定义为是该结点的左孩子结点还是右孩子结点。
  16. 森林(Forest):m(m≥0)棵树的集合。自然界中的树和森林的概念差别很大,但在数据结构中树和森林的概念差别很小。从定义可知,一棵树有根结点和m个子树构成,若把树的根结点删除,则树变成了包含m棵树的森林。当然,根据定义,一棵树也可以称为森林。