关于二叉树的一些简单理解

来源:互联网 发布:怎么抢淘宝秒杀的东西 编辑:程序博客网 时间:2024/06/09 05:29


      一.什么是二叉树 

在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。

二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数为n_0,度为2的结点数为n_2,则n_0=n_2+1。

一棵深度为k,且有2^k-1个节点称之为满二叉树;深度为k,有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中,序号为1至n的节点对应时,称之为完全二叉树。

 二.特殊二叉树

    1.斜树

           所有的结点都只有左子树(左斜树),或者只有右子树(右斜树)。这就是斜树,应用较少

     2.满二叉树

         所有的分支结点都存在左子树和右子树,并且所有的叶子结点都在同一层上,这样就是满二叉树。就是完美                圆满的意思,关键在于树的平衡。
      

    根据满二叉树的定义,得到其特点为:

          叶子只能出现在最下一层。

          非叶子结点度一定是

          在同样深度的二叉树中,满二叉树的结点个数最多,叶子树最多。

 3.完全二叉树

     对一棵具有n个结点的二叉树按层序排号,如果编号为i的结点与同样深度的满二叉树编号为i结点在二叉树中位             置完全相同,就是完全二叉树。满二叉树必须是完全二叉树,反过来不一定成立。

其中关键点是按层序编号,然后对应查找。

结合完全二叉树定义得到其特点:

        叶子结点只能出现在最下一层(满二叉树继承而来)

       最下层叶子结点一定集中在左 部连续位置。

       倒数第二层,如有叶子节点,一定出现在右部连续位置。

       同样结点树的二叉树,完全二叉树的深度最小(满二叉树也是对的)。


 三.二叉树性质

        1.一般二叉树性质(非完全二叉树)

     在非空二叉树的i层上,至多有2i-1个节点(i>=1)。通过归纳法论证。

     在深度为K的二叉树上最多有2k-1个结点(k>=1)。通过归纳法论证。

     对于任何一棵非空的二叉树,如果叶节点个数为n0,度数为2的节点个数为n2,则有: n0 = n2 + 1

     在一棵二叉树中,除了叶子结点(度为0)之外,就剩下度为2(n2)和1(n1)的结点了。则树的结点总数为T =                  n0+n1+n2;在二叉树中结点总数为T,而连线数为T-1.所以有:n0+n1+n2-1 = 2*n2 +n1;最后得到n0 = n2+1;

       2.完全二叉树性质

   具有n的结点的完全二叉树的深度为log2n+1.

   如果有一颗有n个节点的完全二叉树的节点按层次序编号,对任一层的节点i(1<=i<=n)有

    1.如果i=1,则节点是二叉树的根,无双亲,如果i>1,则其双亲节点为[i/2],向下取整

    2.如果2i>n那么节点i没有左孩子,否则其左孩子为2i

    3.如果2i+1>n那么节点没有右孩子,否则右孩子为2i+1

 

 四.二叉树遍历

     1.前序遍历

         基本思想:先访问根结点,再先序遍历左子树,最后再先序遍历右子树即根—左—右
       

     2.中序遍历

                 基本思想:先中序遍历左子树,然后再访问根结点,最后再中序遍历右子树即左—根—右

     3.后序遍历

          基本思想:先后序遍历左子树,然后再后序遍历右子树,最后再访问根结点即左—右—根。






原创粉丝点击