zoukankan      html  css  js  c++  java
  • 二叉树

    参考文献:https://zh.wikipedia.org/wiki/%E4%BA%8C%E5%8F%89%E6%A0%91

    1,N0=N2+1

    N = N0 + N1 + N2;
    N = E + 1;
    E = N1*1 + N2*2;
    ->
    N0 = N2 + 1;

    2,满二叉树和完全二叉树

    FullBT CompleteBT.jpg

      满二叉树 完全二叉树
           总结点数 k             2h-1 <= k < 2h-1             k = 2- 1                   
              树高 h       h = log2k + 1       h = log2(k + 1)

    3,遍历

    用二叉树表示下述表达式:a+b*(c-d)-e/f

    Bitree.JPG

    • 先序遍历的序列是:-+a*b-cd/ef
    • 中序遍历的序列是:a+b*c-d-e/f
    • 后序遍历的序列是:abcd-*+ef/-

    4,深度优先遍历

    结点进行深度优先搜索的顺序:

    利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。

    节点搜索的顺序

    5,广度优先搜索

    结点进行广度优先搜索的顺序:

    节点搜索的顺序

    6,将n叉树转换为二叉树

    将n叉树转换为二叉树的例子

    注:

    • 将一棵树转换为二叉树的方法:
    1. 在兄弟之间加一连接;
    2. 对每个结点,除了其左孩子外,去除其与其余孩子之间的联系;
    3. 以树的根结点为轴心,将整树顺时针转45度。

    7,赫夫曼树

    7.1:路径长度:从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的边的数目;

    7.2:树的路径长度:就是从根结点每一结点的路径长度之和;

      例如:

      a = 1+1+2+2+3+3+4+4=20

      b = 1+2+3+3+2+1+2+2=16

    7.3:结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积;

    7.4:树的带权路径长度:树中所有叶子结点的带权路径长度之和。其中带权路径长度WPL最小的二叉树称作赫夫曼树。

      例如: 

      二叉树a的WPL=5*1+15*2+40*3+30*4+10*4=315

      二叉树b的WPL=5*3+15*3+40*2+30*2+10*2=220

    7.5:构造赫夫曼树:

    注:每一步考虑的权值为权值之和:例如N1=A+E=15

  • 相关阅读:
    SpringMVC—对Ajax的处理(含 JSON 类型)(2)
    md5加密(1)
    js生成邀请码(2)
    SpringMVC---依赖注入与面向切面
    初识json
    java集合类(2)
    springmvc与struts2的区别
    模拟14
    NOIP模拟13
    NOIP模拟12
  • 原文地址:https://www.cnblogs.com/lemon-now/p/5166573.html
Copyright © 2011-2022 走看看