我正在实现自己的数据结构来存储对象,这些对象有一个ID,还附有一个日期。我必须实现的操作要求我有时按日期顺序返回一个数组,或者按ID查找对象。我正在考虑这个问题,当我坐下编码时它显然是不可能的,但我想知道,是否可以说,Node left1,Node left2,Node right1,Node right2然后实现两个同时添加的函数某种双树,其中链接导致按日期排序的树和按ID排序的树?
我正在考虑这样做,以尽量减少我的操作的时间和空间复杂性。
感谢任何指导和帮助,谢谢!
答案 0 :(得分:1)
这是可能的,但没有用,而且非常令人困惑(因为 - 例如 - 你需要单独的方法来重新平衡一个节点相对于另一个树的节点,所以你基本上必须写两个副本你的AVL树实现)。相反,您应该有两个单独的树,但它们的节点可以(并且应该)包含指向相同对象的指针(引用)。您可以(并且应该)将其包装在单个对象中,这样客户端代码就不必担心存在两个底层树。
顺便说一下,注意一对树具有与单个树相同的渐近复杂度,因为2只是一个常数因子(并且没有多于多项式的复杂性)。