如何在二叉搜索树中找到k个最大元素比在O(logN + k)中更快我实现了算法与所说的渐近,但如何使它更快?
lfapxunr1#
使用以下内容扩展树数据结构:
有了这些信息,你就可以避免从根到最右边节点的第一次下降,并立即开始收集值。如果二叉树是平衡的,那么最右边的节点将位于(或接近)树的底层。然后,以反向inorder顺序沿着树遍历--以找到𝑘最大值的节点--将使你遍历O()的边数𝑘。替代结构,如B+树和跳跃列表,也可以提供𝑘对𝑘它们存储的最大值的O()访问。
1条答案
按热度按时间lfapxunr1#
使用以下内容扩展树数据结构:
有了这些信息,你就可以避免从根到最右边节点的第一次下降,并立即开始收集值。如果二叉树是平衡的,那么最右边的节点将位于(或接近)树的底层。然后,以反向inorder顺序沿着树遍历--以找到𝑘最大值的节点--将使你遍历O()的边数𝑘。
替代结构,如B+树和跳跃列表,也可以提供𝑘对𝑘它们存储的最大值的O()访问。