数据结构之树(Tree)(一) :树

ps:好久没用动手写blog了,要在这条路上不断发展,就需要不停的学习,不停的思考与总结,当把写blog作为一种习惯,就是自我成长的证明,Fighting!、

一、简介

  树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。

 

二、定义

  一棵树(tree)是由n(n>0)个元素组成的有限集合,其中:

  (1)每个元素称为结点(node);

  (2)有一个特定的结点,称为根结点或根(root);

  (3)除根结点外,其余结点被分成m(m>=0)个互不相交的有限集合,而每个子集又都是一棵树(称为原树的子树)

三、基本概念

  度

     树的度——也即是宽度,简单地说,就是结点的分支数。

    以组成该树各结点中最大的度作为该树的度,如上图的树,其度为3;

    树中度为零的结点称为叶结点或终端结点。

    树中度不为零的结点称为分枝结点或非终端结点。

    除根结点外的分枝结点统称为内部结点。

  层次

    根结点的层次为1,其他结点的层次等于它的父结点的层次数加1.

  深度

    树的深度——组成该树各结点的最大层次,如上图,其深度为4;

  路径

    对于一棵子树中的任意两个不同的结点,如果从一个结点出发,按层次自上而下沿着一个个树枝能到达另一结点,称它们之间存在着一条路径。

    可用路径所经过的结点序列表示路径,路径的长度等于路径上的结点个数减1.

  森林

    指若干棵互不相交的树的集合

 

四、树形结构的逻辑特征

      树形结构的逻辑特征可用树中结点之间的父子关系来描述:
    (1) 树中任一结点都可以有零个或多个直接后继(即孩子)结点,但至多只能有一个直接前趋(即双亲)结点。
    (2) 树中只有根结点无前趋,它是开始结点;叶结点无后继,它们是终端结点。
    (3) 祖先与子孙的关系是对父子关系的延拓,它定义了树中结点之间的纵向次序。
    (4) 有序树中,同一组兄弟结点从左到右有长幼之分。
          对这一关系加以延拓,规定若k1和k2是兄弟,且k1在k2的左边,则kl的任一子孙都在k2的任一子孙的左边,那么就定义了树中结点之间的横向次序。

五、树的种类

  • 无序树:树中任意节点的子节点之间没有顺序关系,这种树称为无序树,也称为自由树;

  • 有序树:树中任意节点的子节点之间有顺序关系,这种树称为有序树;

    • 二叉树:每个节点最多含有两个子树的树称为二叉树;

      • 完全二叉树:对于一颗二叉树,假设其深度为d(d>1)。除了第d层外,其它各层的节点数目均已达最大值,且第d层所有节点从左向右连续地紧密排列,这样的二叉树被称为完全二叉树;

      • 满二叉树:对于上述的完全二叉树,如果去掉其第d层的所有节点,那么剩下的部分就构成一个满二叉树(此时该满二叉树的深度为d-1);

    • 霍夫曼树:带权路径最短的二叉树称为哈夫曼树或最优二叉树;

    • B树

posted @ 2014-09-17 00:21  cq-home  Views(679)  Comments(0Edit  收藏  举报