初探数据结构之“树”的定义和二叉树定义及性质

匆匆过客 提交于 2020-04-01 08:25:36

            这周学习了数据结构中的树,看了郝斌的数据结构视频。。。虽然讲的很浅很浅但是对于我这么笨的人来说刚好能看懂。又通过小组学姐的讲解对树有了一个初步的认识,现在将学到的知识总结一下=、=

       一、树的定义

       树是由n(n>=0)个节点构成的有限集合,n = 0时称为空树。在任意一颗非空树中:

       1)、有且只有一个根节点

       2)、除根节点以外,其余节点分成m(m > 0)个互不相交的有限集合T1、T2、。。。Tm,其中每一个集合又都是一棵树

       =、=好吧,我承认这是抄书的。下图就一棵树,怎么长得不像树。。。确实不像树,像葡萄(=、=)

(图片来自维基百科)

        二、树中的术语

        1)、结点:包含一个数据元素或指向其他元素的索引(就是上图中的一个小圆圈=、=)

        2)、结点的度:一个结点的子树个数(上图中一个圆圈后边跟的几条线,注意是它后边挂的,不包括挂它的那根)

        3)、树的度:树中结点的最大度

        4)、终端结点(叶子结点):度为零的结点(图中那些挂在最后孤单的那些圆圈=、=)

        5)、分支结点:度不为零的结点,也成非终端结点

        6)、孩子结点:一个结点对的直接后继(就是直接挂在它后边的圆圈)

        7)、双亲结点:一个结点的直接前驱(挂它的那个圈、问:为什么叫双亲结点而不叫父结点或母结点?答:男女平等=、=)

        8)、结点的层次:根为第一层,根的孩子结点为第二层,以此类推。。。

        9)、树的高度(深度):树中结点的最大层次

       10)、兄弟结点:同一双亲结点的孩子结点之间互称为兄弟结点(例如上图中的B和C。ps:我认为叫基友结点更好=、=)

       11)、祖先结点:从根结点到该结点所经过的所有结点(例如上图中J的祖先结点是A、B、E)

       12)、子孙结点:以某结点为根的子树中的任一结点都称为该结点的子孙结点

       13)、有序树:结点的子树从左至右有顺序,否则,称为无序树

       14)、森林:好多棵不相交的树称为森林

       三、二叉树

       1)、定义:

             (1)、二叉树定义:每个结点至多只能有两棵子树且有左右之分,顺序不可以颠倒的树。

             (2)、满二叉树:从深度为k且有2^k - 1个结点的二叉树称为满二叉树,在满二叉树中煤层的结点都是满的(如下图)

                     (3)、完全二叉树:根据满二叉树的编号原则,深度为k,结点为n的二叉树,如果结点1~n的位置序号正好对应满二叉树的1~n则称此树为完全二叉树(如下图、其实就是把满二叉树的最后那行从右向左开始删,删几个都无所谓,但一定要从最后一行的右开始删不能越过一个删另一个。删完剩下的就是个完全二叉树)


       2)、奇葩性质:

             (1)、二叉树的第i层上至多有2^(i - 1)个结点(i >= 1)

             (2)、高度(深度)为k的二叉树最大结点数为2^k - 1(k > 0)

             (3)、任一二叉树如果叶子结点的个数为m,度数为2的结点个数为n则有:m = n + 1

             (4)、具有n个结点的完全二叉树深度是[log2n] + 1。[x]为取整函数(不超过x的最大整数)

             (5)、如果将一棵完全二叉树从上到下,从左到右对结点编号为1、2、3。。。,n,然后将此二叉树中各个结点顺序存入地存放于一个一维数组中,并简称编号为j的节点为j(1 <= j <= n),则有如下结论成立:

              {

                   1、若j = 1,则结点j为根节点,为双亲,否则j的双亲 为[j/2]

                   2、若2j <= n,则结点j的左孩子为2j,否则无左孩子,即编号为j且满足2j > n的结点为叶子节点

                   3、若2j + 1 <= n,则结点j的右孩子为2j + 1,否则无右孩子

                   4、若结点j序号为奇数且不等于1,则它的左兄弟为j - 1

                   5、若结点j的序号为偶数且不等于n,它的右兄弟为j + 1

             }

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!