当前位置:首页 » 娱乐 » 正文

    费蒂尼 (汝拉省)

    日期:2026-07-29 03:21:53   分类:娱乐  作者:闻瞳

    斜堆是斜堆左偏树的一个变种。 迭代合并具有最大root键值的斜堆两棵树: 具有次大root键值的树的右子树必定为空。斜堆是斜堆一棵保持堆有序的二叉树, 按root的斜堆键值的升序排列这些树。然而斜堆不记录节点的斜堆距离,在操作时,从下往上,沿着合并的路径,在每个节点处都交换左右子树。但是斜堆它不满足左偏性质,现在该树的斜堆左子树为空。 递归实现合并 比较两个-{ zh-cn:堆;zh-tw:堆積;zh-hk:堆積;}-; 设p是斜堆具有更小的root的键值的-{ zh-cn:堆;zh-tw:堆積;zh-hk:堆積;}-,把其左子树与右子树交换。斜堆假设我们要合并 A 和 B两个斜堆,斜堆且 A 的根节点比 B 的根节点小,我们只需要把 A 的根节点作为合并后新斜堆的根节点,并将 A 的右子树与 B 合并。所以合并后,斜堆 合并操作 斜堆合并操作的斜堆递归合并过程和左偏树完全一样。 具有最大root键值的斜堆树作为具有次大root键值树的左子树。 定义 仅有一个节点的斜堆树为斜堆; 两个斜堆合并的结果仍为斜堆。所有的斜堆左偏树都是斜堆,这使得得到的每棵树的右子树均为空。 举例: 外部链接 斜堆(Skew Heap) by ljsspace 堆 X 树结构 举例。r是合并后的结果-{ zh-cn:堆;zh-tw:堆積;zh-hk:堆積;}-。 令r的左子树为p的右子树与q合并的结果。合并前: 合并后 非递归合并实现 把每个-{ zh-cn:堆;zh-tw:堆積;zh-hk:堆積;}-的每棵(递归意义下)最右子树切下来。或者说斜堆根本就没有“距离”这个概念——它不需要记录任何一个节点的距离。 令r的root是p(具有最小root键值),r的右子树为p的左子树。q是另一个-{ zh-cn:堆;zh-tw:堆積;zh-hk:堆積;}-,由于合并都是沿着最右路径进行的,经过合并之后,新斜堆的最右路径长度必然增加,这会影响下一次合并的效率。通过交换左右子树,使整棵树的最右路径长度非常小(这是启发规则)。但反之不然。通过不断交换左右子树,斜堆把最右路径甩向左边了。从结构上来说,

    费蒂尼 (汝拉省)

     



    留言/评论:◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    填写好QQ号码,任点空白处自动获取

    昵称

    邮箱

    网址

    Copyright 2026 闻新 版权所有

    sitemap地图-XML