二叉树

参考文献: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

 

posted @ 2016-01-28 16:53  lemon-now  阅读(275)  评论(0编辑  收藏  举报