与树相关的公式、定理

来源:互联网 发布:js中flag使用方法 编辑:程序博客网 时间:2024/04/27 18:33

根据树的叶子结点个数、非叶子节点个数、树的深度等等,推导出的公式、定理也有不少,可以自己手工推算一下,记忆会更深刻,此博文只介绍公式、定理内容,不作推导。

1. 二叉树第i层上至多有2^i-1个结点,其中i大于等于1,2^i表示2的i次方

2. 深度为k的二叉树至多有2^k-1个结点,其中k大于等于1;

3. 任何一颗非空二叉树,若它的叶子结点数为m,2度结点数为n,则m=n+1;

4. 具有n个结点的完全二叉树深度为

5. 设完全二叉树中结点编号依次为1到n:

    i=1: 无双亲;

    i不等于1:双亲编号

    2i>n:无左孩子,否则左孩子为2i;

    2i+1>n:无右孩子,否则有孩子为2i+1.

6.  二叉树不是树的特殊情形,而是与树不同的数据结构,即二叉树并不等价于2度的树;

    完全二叉树的存储:将所有结点按层次次序存储在一组地址连续的存储单元中;

    非完全二叉树的存储:先扩充为完全二叉树,再按完全二叉树存之。

7. 折半查找判定树是任一结点的左、右子树上的结点数最多相差一的二叉树,除最下面一层外,各层结点数均达到最大值。

8. 二叉排序树:左孩子的值<根的值<右孩子的值,新节点作为二叉排序树的叶子。

9. 平衡二叉树(AVL树):任何结点的左子树和右子树的高度最多相差一的二叉排序树。

    平衡因子:-1,0,1.

10. 几个例子

   (1)设一个二叉树有3个叶子结点,8个度为1的结点,则共有结点(13)个。

      分析:定理 任一非空二叉树结点总数为:n=n0+n1+n2  (n0、n1、n2分别为度为0、1、2的结点个数),

                          分支总数为b=n1+n2

                                            b=n-1=n0+n1+n2-1

                          所以  n2=n0-1

                          结点数为 3+2+8=13

    (2)设一棵完全二叉树共699个结点,则叶子结点数为(350)。

      分析:2^10>699>2^9-1  可见共10层,9层全满(2^9-1=511)

                第10层有 699-511=188个叶子结点

                2^(9-1)-188/2=162个叶子结点在第9层,共188+162=350个叶子结点。

原创粉丝点击