[数据结构] 树

来源:互联网 发布:淘宝买剑三号安全吗 编辑:程序博客网 时间:2024/06/05 19:45

简介

树(Tree)是n(n>=0)个结点的有限集。在任意一棵非空树中

  • 有且仅有一个特定的称为根(Root)的结点
  • 当n > 1时,其余结点可分为m(m > 0)个互不相交的有限集T1,T2,…,Tm,其中每个集合本身又是一棵树,并且称为根的子树(SubTree)。例如,下图
    这里写图片描述
    是只一个根结点的树
    这里写图片描述
    上图(b)是有13个结点的树,其中A是根,其余结点分成3个互不相交的子集:T1 = {B, E, F, K, L}, T2 = {C, G}, T3 = {D, H, I, J, M}; T1, T2, T3都是根A的子树,且本身也是一棵树。例如T1,其根为B,其余结点分为两个互不相交的子集;T11={E,K,L},T12 = {F}。T11 和 T12都是B的子树。而T11中E是根,{K}和{L}是E的两棵互不相交的子树,其本身又是只有一个根结点的树。

上述树的结构定义加上树的一组基本操作就构成了抽象数据类型树的定义。

基本述语

  • 树的结点:包含一个数据元素级若干指向其子树的分支。
  • 结点的度(Degree):结点拥有的子树称为结点的度。例如上图中A的度为3,C的度为1,F的度为0。
  • 叶子(Leaf)或终端结点:度为0的结点称为叶子或终端结点。上图中的结点K,L,F,G,M,I,J都是树的叶子。
  • 非终端结点或分支结点:度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部结点。
  • 树的度:是树内各结点的度的最大值。如上图的树的度为3。
  • 孩子与双亲:结点的子树的根称为该结点的孩子(Child),相应地,该结点称为孩子的双亲(Parent)。例如,在上图所示的树中,D为A的子树T3的根,则D是A的孩子,而A则是D的双亲。
  • 兄弟(Sibling):同一个双亲的孩子之间互称兄弟。例如,H,I和J互为兄弟。
  • 祖先:是从根到该结点所经分支上的所有结点。例如,M的祖先为A,D和H
  • 子孙:以某结点为根的子树中的任一结点都称为该结点的子孙。如B的子孙为E,K,L和F
  • 结点的层次(Level):从根开始定义起,根为第一层,根的孩子为第二层。若某结点在第l(小写的L)层,则其子树的根就在第l + 1层。其双亲在同一层的结点互为堂兄弟。例如,结点G与E,F,H,I,J互为堂兄弟。
  • 深度(Depth)。树中结点的最大层次称为树的深度或高度。上图所示的树的深度为4。
  • 有序树无序树:如果将树中结点的各子树看成从左到右是有次序的(即不能互换),则称该树为有序树,否则称为无序树。在有序树中最左边的子树的根称为第一个孩子,最右边的称为最后一个孩子。
  • 森林:是m(m >= 0)棵互不相交的树的集合。对树中每个结点而言,其子树的集合即为森林。

参考

  • 数据结构 严蔚敏
0 0