我有一个接口Tree和一个实现这个接口的抽象类 RBTree。我还有几个类Tree1.Tree9,它扩展了这个抽象类。我编写了一个测试单元,在这里我想做这样的事情: for(int i = 0; i < 10; i++){rbTree = new Tree1(); //if the tree in the parameter was of instance Tree1
rbTree = new Tre
当我想要初始化一个红黑树时,我会按照文档中的方法来做。 auto rbt = redBlackTree(1,2,3,4) 但是,如果我想要全局声明它,或者创建一个红黑树数组,我不知道如何做,并且文档也没有帮助。我尝试过各种方法,但经常收到类似这样的错误:redBlackTree!int is used as a type,你能帮我吗?如果我知道放什么而不是auto,也就是如果我知道redBlackTree的类型,我就能做到。 我想在全局作用域中声明一棵红黑树,或者声明一个需要声明类型的数组,我想这样做: type rbt; rbt.insert(3);
}
当我还在努力寻找问题的解决方案时,我有另一个可能更容易的解决方案。下面是Okasaki红黑树实现的insert函数。我想要做的是在我插入到树中时保持数据不排序。因此,每次我插入数据时,数据总是转到最左边/最下面的叶子。不需要比较x< y,x> y或x == y。一开始看起来很简单,只需移除这些保护,只需这样做: ins s@(T color A Y b) = balance color (ins a) y b。行为似乎是树保持平衡,但着色变得有点混乱。最终,这会影响将来的插入。你知道如何实现这一点吗?我认为这可能是我对上一个问题的第一步。我刚刚开始使用Haskell,所以我不是很直