求满二叉树(哈夫曼树)叶子节点和非叶子节点的数目

时间:2022-05-10 17:30:33

先上题目:

    一颗有n(n>0)个节点的满二叉树共有几个叶子节点和非叶子节点?请写出解题过程

方法有两种:设有x个叶子节点和y个非叶子节点

    法一:若该该二叉树有k层(k>0),则

                   第一层有一个节点、

                   第二层有两个节点

                    第三层有四个节点

                    第四层有八个几点

                   ……

                   第k层有2的k-1个节点

  则一颗k层的满二叉树共有1+2+4+……+2的k-1次方= n(1)

(1)*2 = 2+4+……+2的k-1次方+2的k次方 = 2n(2)

由(1)、(2)易得n = 2的k次方 - 1(3)

又因为叶子节点x = 2的k-1次方 = y+1(4)

由(3)、(4)易得x=(n+1)/2,y=(n-1)/2

  法二:n = x + y(1)

经过求索思考得 y = x - 1(2)

x = (n+1)/2,y = n - y = x - 1 = (n - 1)/2

挺有意思的,锻炼下大脑别生锈了