专注于技术 心无旁骛 - justforfan528

Linux技术| 网络编程coding | 网络安全Cyber Security | study |

 

导航

软件设计师之学习1

1、二叉树的性质:
   a)对任何一棵二叉树,如果其叶子节点数为n0, 度为2的节点数为n2,则n0 = n2 +1;
     证明: 首先,从树的叶子(结点)望上看,可以看出除了根结点没有与它相连的树枝外,其它结点均有一个树枝与结点相连,所以有
    “总的“树枝”数就是结点数减1”这个结论,而且总树枝数为:n0+n1+n2-1。

     其次,从树的根望下(叶子)看,都会有度为2的结点有两个树枝,度为1的结点有1个树枝,度为0的无树枝,也就是
     终端结点数为n0,所以相应的“树枝”数为0;
     度为2的结点数为n2,相应的“树枝”数为2n2;
     度为1的结点数为n1,相应的“树枝”数为n1;
     此时总树枝数为:0+n1+2n2;

     显然有:
     n0+n1+n2-1=0+n1+2n2
     整理可得:n2+1=n0

    证明方法二:
       二叉树当中的结点只有度为0、1、2三种情况,度为0就是终端结点。构造二叉树的过程就是从原始结点开始“生长”结点的过程,
       初始状态下,原始结点就是终 端结点,n0=1,n1=0,n2=0,每当一个原来的终端结点变成“1度结点”的时候只是把终端的位置向
       下移动了一点,n1++,不影响n0和n2,而 每当一个原来的终端结点变成“2度结点”的时候,原来的终端消失,增加两个终端,总
       效果就是n0++,n2++,所以二叉树当中的n0和n2总是同步增 加,即总是满足n0=n2+1。

2、丰满树
   设二叉树T有n个结点,令i=[log2(n+1)],r=n-(2^i-1)。如果其中(2^i-1)个结点放满第0至(i-1)层。并且
   (1) 若r=0,则称树T是一棵满二叉树。
   (2) 若r>0,且剩下的r个结点尽量靠左地排列在第i层上,则称树T是一棵拟满二叉树,简称拟满树。
   (3) 若r>0,且剩下的r个结点随意地排列在第i层上,则称树T是一棵丰满二叉树,简称丰满树。

3、哈夫曼树
   a)给定n个值权序列<ci,pi>,构造出的最优二叉树(哈夫曼树)中的节点数为m = 2*n -1; 因为m = n0+n1+n2,而n1=0, n0=n2+1,n =n0;
     其中,n0是度为0的节点,n1是度为1的节点,
n2是度为2的节点。

4、


posted on 2007-03-13 10:45  游荡者  阅读(478)  评论(0编辑  收藏  举报