《算法导论》笔记 第12章 总结与思考

【思考】


12-1 具有相同关键字的二叉查找树


a) 当用TREE-INSERT将n个具有相同关键字的数据项插入到一棵初始为空的二叉查找树中时,该算法的渐进性能如何?

差不多O(n^2)


b) 在结点x处设一个布尔标志b[x],并根据b[x]的不同值,置x为left[x]或right[x]。每当插入一个与x具有相同关键字的结点时,b[x]取反!

O(nlogn)


c) 在结点x处设置一个列表,其中所有结点都具有与x相同的关键字,并将z插入到该列表中。

O(n^2)


d) 随机地将x置为left[x]或right[x]。

最坏O(n^2),平均O(nlogn)。


12-2 基数树

基数树,或称Patricia trie/tree,或 crit bit tree,是一种基于trie(字典树)的特殊的数据结构。一般用来储存字符串集。

将01串按性质插入基数数中,对树进行遍历,得到的串即为按字典序排列的。


12-3 随机构造的二叉查找树中的平均节点深度

证明在一棵随机构造的二叉查找树中,n个节点的平均深度为O(lgn)。


12-4 不同的二叉树数目


设bn表示包含n个结点的不同的二叉树的数目。在本问题里,要给出关于bn的公式和一个渐进估计。

a) 证明:b0=1,且对n>=1,有:


当n==1时,b1=b0*b0=1。包含1个结点的不同二叉树的数目为1。

假设当n==i-1时,成立。

当n==i时,除去根节点,共有i-1个结点要分配到左右两个子树中,假设左子树拥有结点k,则右子树拥有结点i-1-k个,则有方案bk*b(i-1-k)种。

因此bi=∑bk*b(i-1-k),假设成立。

因此bn=∑bk*b(n-1-k)。


b) 设B(x)为生成函数

证明B(x)=xB(x)^2+1,因而表达式B(x)的一种方式是

在点x=a处f(x)的泰勒展式为


其中f(k)(x)是在点x处f的k阶导数。


c) 通过在x=0处使用sqrt(1-4x)的泰勒展式,证明



d) 证明:




posted on 2014-04-20 21:39  电子幼体  阅读(443)  评论(0编辑  收藏  举报

导航