我可以在红黑树中插入未分类的数据吗?

时间:2011-06-05 14:07:57

标签: algorithm haskell red-black-tree

虽然我仍在努力寻找this问题的解决方案,但我还有另外一个可能更容易的问题。以下是Okasaki红黑树实现的插入功能。我想要做的是在插入树时保持数据未排序。因此,每次插入时,数据总是到达最左侧/最底部的叶子。没有必要比较x< y,x> y或x == y。一开始只需要移除这些防护装置就行了起来非常简单:ins s @(T color a y b)= balance color(ins a)y b。行为似乎是树保持平衡但着色变得有些混乱。并最终影响未来的插入..任何想法如何实现这一目标?我认为这可能是我上一个问题的第一步。我刚开始玩Haskell,所以我说得不是很直接。非常感谢。

insertSet x s = T B a y b
  where ins E = T R E x E
        ins s@(T color a y b) =
          if x < y then balance color (ins a) y b
          else if x > y then balance color a y (ins b)
          else s

['d','a','s','f']   s
                   /\
                  a  f
                 /
                d        (unsorted tree)

1 个答案:

答案 0 :(得分:1)

你可以在haskellDB中使用我的RBTree实现, http://hackage.haskell.org/package/RBTree

使用insert函数:

insert :: (a -> a -> Ordering) -> RBTree a -> a -> RBTree a

为其提供(\_ _ -> LT)功能,然后您可以随时将新元素放入最左侧的位置。