您的位置:首页 > 其它

算法导论 习题 12-2 基数树(Radix tree)

2011-11-29 17:00 555 查看
题目内容见算法导论161页的12-2,要求是给定一个由二进制串构成的结合S,利用基数树来对S进行排序。算法起始思路还是比较清楚的,1,首先我们需要利用S来构造基数树,我们对每一个S中的串s,遍历其每一位,遍历完成后我们就可以找到它在树中的最终位置。2,在确定了位置之后,我们将当前位置的节点的key设置为这个二进制串s(如果S中有相同的串,我们需要给每个节点维护一个链表即可,有点像散列表的链接存贮,但是S是一个集合,里面元素应该都是不重复的)3,在树的构建过程中,没有存储元素的节点为空。4,最后我们通过树的前序遍历即可实现有序输出S。(因为根据规则,对于某一个节点,它是严格小于其左子树和右子树的节点的,因为长度比它的孩子短,而左子孩子是严格小于其右子孩子的,即 n < left(n) < right(n))
在1,2,3步构建基数树的过程中,时间代价是O(n),而在遍历树的代价是O(|S|),我们知道 |S| <= n的,所以总的时间代价就是 O(n)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: