如何将Avl Tree转换为数组,反之亦然?

时间:2014-04-30 11:38:44

标签: c++ arrays avl-tree

假设我有某种类型的AvlTree,它包含两个变量,如:

class type {
    int variable1;
    int variable2;
};

让我们说"输入"拥有所有必要的运算符,以便我的树按变量2排序 我想通过从树的某些分支中减去变量2的k来更新我的树并进行更新(不是全部)。我需要在O(n)(n =树的大小)中这样做。我想要做的是将树转换为"类型"更新所需的内容并转换回来。但是怎么样?

2 个答案:

答案 0 :(得分:0)

为什么不遍历树"按顺序"并将输出数据保存到数组?阅读可以以相反的方式完成。不应该太难。

答案 1 :(得分:0)

这是你能做的。

  1. 按顺序遍历并将整个树复制到数组中。
  2. 更新阵列。
  3. 对数组进行排序。
  4. 在同一棵树上进行有序遍历并从数组中复制元素。
  5. 如果需要,可以释放任何内存。
  6. 时间= O(n) + O(n) + O(nlogn) + O(n) = O(nlogn)

    如果数组中的元素很少更新,请执行插入排序,将运行时间设为O(n)