zoukankan      html  css  js  c++  java
  • 树的概念

    树的概念

    之前介绍的所有的数据结构都是线性存储结构。本章所介绍的树结构是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合。

     

    image.png

    图 1(A) 是使用树结构存储的集合 {A,B,C,D,E,F,G,H,I,J,K,L,M} 的示意图。对于数据 A 来说,和数据 B、C、D 有关系;对于数据 B 来说,和 E、F 有关系。这就是“一对多”的关系。

    基本术语

    ①结点: 数据元素 + 若干指向子树的分支

    ②结点的度: 分支的个数

    ③树的度: 树中所有结点的度的最大值

    ④叶子结点: 度为零的结点

    ⑤分支结点: 度大于零的结点

    ⑥(从根到结点的)路径:  由从根到该结点所经分支和结点构成。

    ⑦孩子结点: 一个结点的直接后继

    ⑧双亲结点: 一个结点的直接前驱

    ⑨兄弟结点: 同一双亲结点的孩子结点之间互称~ ~。

    ⑩ 堂兄弟、祖先结点、子孙结点

    结点的层次: 假设根结点的层次为0 ,依次累加 。

    树的深度: 树中 叶子 结点所在 的

    有向树: 有确定的根;树根和子树根之间为有向关系。

    有序树: 子树之间存在确定的次序关系。

    无序树:子树之间不存在确定的次序关系。

    森林: 是m m ( m≥0 )棵互不相交的树的集合

     

    二叉树定义:

    满足以上两个条件的树型结构为 二叉树 。

    ①每个结点的度都不大于2;

    ②每个结点的孩子结点次序不能任意颠倒。

    二叉树或为 空树 , 或是由一个 根结点 加上两棵分别称为 左子树 和 右子树 的 、 互不相交的二叉树组成 。

                                           image.png

    表示方法

    image.pngimage.png

    image.pngimage.png

    二叉树形态:

     

                       image.png

    性质:

    1 在二叉树的第 i 层上至多有2 i 个结点

    用归纳法证明:

    (1 ) 当 i = 0  层时,只有一个根结点: 2  i = 2 0 = 1  ;

    (2  ) 假设 i=k 时成立,即第k 层上至多有2  k 个结点;

    (3 ) 那么第 k+1 层上最多有2 k × 2  个,即2 k+1 个 。

    结论成立,证毕。

    2 深度为 k 的二叉树上至多含 2 k+1 -1 个结点(k≥0)。

    证明:

    基于上一条性质,深度为 k 的二叉树上的结点数至多为

       image.png

    3 对任何一棵二叉树,若它含有n0 个叶子结点、n2 个度为 2 的结点,则必存在关系式:

     

               image.png

       image.png

    对于一个二叉树来说,除了度为 0 的叶子结点和度为 2 的结点,剩下的就是度为 1 的结点(设为 n1),那么总结点 n=n0+n1+n2。同时,对于每一个结点来说都是由其父结点分支表示的,假设树中分枝数为 B,那么总结点数 n=B+1。而分枝数是可以通过 n1 和 n2 表示的,即 B=n1+2*n2。所以,n 用另外一种方式表示为 n=n1+2*n2+1。

    两种方式得到的 n 值组成一个方程组,就可以得出 n0=n2+1。

     

    满二叉树

    如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树

                           image.png

    满二叉树除了满足普通二叉树的性质,还具有以下性质

    1. 满二叉树中第 i 层的节点数为 2i-1 个。
    2. 深度为 k 的满二叉树必有 2k-1 个节点 ,叶子数为 2k-1
    3. 满二叉树中不存在度为 1 的节点,每一个分支点中都两棵深度相同的子树,且叶子节点都在最底层。
    4. 具有 n 个节点的满二叉树的深度为 log2(n+1)。

    完全二叉树

    如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树

    image.png

     

    完全二叉树的性质

    1) n 个结点的完全二叉树的深度为 ⌊log2n⌋+1

    2)对于具有n个结点的完全二叉树,如果按照从上到 下和从左到右的顺序对树中的所有结点从1开始

    进行编 号,则对于任意的序号为i的结点,有:

    (1) 如果i=0,则它是根结点,它没有父结 ,如果i>0, 则它的父结点的下标为 [(i-1)/2];

    (2) 如果2i+1≤n-1, 则下标为 则下标为i的结点的左子结点的下标为 2i+1; 否则,下标为i的结 点没有左子结点;

    (3) 如果2i+2≤n-1,则下标为 则下标为i的结点的右 子结点的下标为 2i+2; 否则,下标为i的结 点没有右子结点。

     

    关系:满二叉树必为完全二叉树,而完全二叉树不一定是满二叉树。

    扩充的二叉树

     

                                       image.png

     

     

    • 加 在扩充的二叉树里外部结点(叶结点)都是新增加 的结点

    • 如果原二叉树有n个结点,在扩充的二叉树里这n个结点的度数都是2。因此扩充的二叉树有 2n 条边,2n+1 个结点,除n 个原来二叉树结点,还有 n+1是新增加的外部结点

     

    性质:

    6 在扩充的二叉树里,新增加的外部结点的个数比原来的内部结点个数多1

                       image.png

    定义:外部路径长度E和I内部路径长度E = I + 2n

    如下图的扩充二叉树中: :

    E = 2 + 2 + 4 + 4 + 3 + 3 + 3 = 21

    I =  0 + 1 +  1 +  2 + 2 + 3 = 9

     

     

    因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/13038179.html

  • 相关阅读:
    JQ 鼠标滑过按钮改变背景图片
    TreeView 用法(有代码)
    MVC框架 IE浏览时IIS配置
    table 边框 不显示好td内为空串时,边框不显示
    DIV 内滚动条 样式的写法
    用 Grid 数据绑定
    架设支持Silverlight的Web服务器
    c# sql like @参数
    IE8 的margintop兼容问题
    弱符号与强符号
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/13038179.html
Copyright © 2011-2022 走看看