算法导论13章红黑树 思考题总结

13-1 (持久动态集合) 有时在算法的执行过程中我们会发现在更新一个动态集合时,需要维护其过去的版本。我们称这样的集合为持久的(persistent)。实现持久集合的一种方法是每当改集合被修改时,就将其完整地复制下来,但是这种方法会降低一个程序的执行速度,而且占用过多的空间。有时候,我们可以做得更好些。

       考虑一个有 INSERT、DELETE和SEARCH操作的持久集合 S,我们使用如图13-8(a)所示的二叉搜索树来实现。对集合的每一个版本都维护一个不同的根。为了将关键字 5 插入到集合中,创建一个具有关键字 5 的新结点。该结点成为具有关键字 7 的新结点的左孩子,因为我们不能更改具有关键字 7 的已存在结点。类似地,具有关键字 7 的新结点成为具有关键字 8 的新结点的左孩子,后者的右孩子成为具有关键字 10 的已存在结点。关键字为 8 的新结点又成为关键字为 4 的新根结点 r' 的右孩子,而 r' 的左孩子是关键字为 3 的已存在结点。这样,我们只是复制了树的一部分,新树共享了原树的一些结点,如图13-8(b)所示。

        假设树中每个结点都有属性 key、left 和 right,但没有属性parent。


a. 对于一课一般的持久二叉搜索树,为插入一个关键字 k 或删除一个结点 y࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值