【问题标题】:What is the Ruby equivalent of Java's TreeSet<Integer> (self balancing binary tree)?Java 的 TreeSet<Integer>(自平衡二叉树)的 Ruby 等价物是什么?
【发布时间】:2012-12-31 13:58:57
【问题描述】:

我想使用自平衡二叉树来处理一些算法,但我很难找到与 Java 的 TreeSet(或 C# 的 SortedSet)等效的 Ruby。

我找到了类似的网页代码:

https://github.com/nahi/avl_tree#readme

https://github.com/MishaConway/binary_search_tree

http://blog.mikedll.com/2009/09/balanced-avl-binary-search-tree.html

我宁愿依赖 Ruby 标准库中的东西。 Ruby 的标准库中没有为此提供一些类吗?除了RubyTree,我似乎找不到很多东西,我不认为这是自我平衡的。

(我会一直在谷歌上搜索,直到找到它,或者这个论坛上有人指出我正确的方向:))

【问题讨论】:

    标签: ruby binary-tree avl-tree


    【解决方案1】:

    您可以使用集合中的 SortedSet,如下所示

    require 'set'
     s = SortedSet.new([8,2,9,3])
     => #<SortedSet: {2, 3, 8, 9}>
    

    将参数数组作为参数传递

    【讨论】:

    • 所以,如果我想确定在随机生成的平衡二叉搜索树中查找键所需的平均时间,我可以使用 SortedSet?我想看看它在哪里说 SortedSet 是作为平衡二叉搜索树实现的......嗯
    • @FoolishChap 这是一棵红黑树。见github.com/ruby/ruby/blob/trunk/lib/set.rb#L540
    • 字!非常感谢!
    • 在 MRI 中,它是使用 Hash 实现的,在所有其他 Ruby 实现中,它是使用某种自平衡搜索树来实现的。 Ruby 语言规范没有指定任何特定的数据结构或算法。事实上,Ruby 语言规范完全忽略了整个 标准库。所以,你不能依赖它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多