数据结构可以分为:线型结构,树型结构,图类型结构三大类。线性表,堆栈串数组都是线性结构。树型结构是 每一个结点中只允许有一个直接前驱结点,但允许有多个直接后继节点的。

    树的定义:树是有n(n>=0)个结点构成的集合。n=0称为空树:

            有一个特殊结点称为根结点,根结点没有前驱结点。

             当n>1时,除跟结点外其他结点被分成m(m>0)个互不相交的集合T1,T2......Tm其中每一个结合本身又是一颗结构和树类同的子树。

            树是一种递归形式的结构。

      名词定义:

           结点:是有数据元素和构造数据元素之间关系的指针组成的数据结构。

           结点的度:树节点拥有的子树的个数。

           页结点:叶结点度为0,既是没有子树的结点称为叶结点也是终端结点。

            分支结点:度不为0,既是有子树的结点。

孩子结点:既是后继结点。

双亲结点:一个结点的父结点称为双亲结点。

兄弟结点:具有相同双亲结点的结点称为兄弟结点

树的度:树中所有的结点的度最大那个称为树的度

结点的层次:从根结点到某一个结点经过的层次称为结点的层次

树的深度:树的最大层次数。

无序树:树的各个子树是可以任意交换的,不会构成不同的树。

有序树: 各子树从左到右是有序的,交换了某一个结点,树树不相同的。

 

树的表示方法:

      

凹入法:

    A

                B

                          E

                 C   

                          F

                         F

                 D

                                G

                                              H

                                             K

树的抽象数据类型:

            数据集合:树的结点集合,每一个结点由数据元素和构造数据之间关系的指针组成。

            树的操作集合:

                   创建树T

                   删除树T

                    双亲结点:

                    左孩子结点

                     右兄弟结点

                      遍历树

树的存储结构:

                   树的表示方法主要有:

                            双亲表示法,双亲孩子表示法,孩子表示法,孩子兄弟表示法

                       可以使用链表构造一个树。

双亲表示法:

      每一个结点有两个域,一个数据域,一个指向双亲的指针域。

双亲表示法查找寻找一个结点的双亲很方便,但对于寻找孩子结点不方便,这种结构如网站目录表。

孩子结点:

   就是双亲结点包含一个孩子结点的所有指针,这种方法实现比较麻烦因为,孩子是不固定的。

 

双亲孩子结点:既是每一个结点包含双亲结点和孩子结点

孩子兄弟结点:既是每个结点包含孩子结点和兄弟结点

 

孩子兄弟结点是最常用的存储结构,实现二叉树是非常便利的。

 

posted on 2015-03-18 21:56  木子牛  阅读(305)  评论(0编辑  收藏  举报

导航