如何将AvlTree转换为数组,反之亦然

How to convert AvlTree to array and vice verse?

本文关键字:数组 反之亦然 转换 AvlTree      更新时间:2023-10-16

假设我有一个由两个变量组成的某种类型的AvlTree,如下所示:

class type {
    int variable1;
    int variable2;
};

假设"type"具有所有必要的运算符,以便我的树按variable2排序。
我想遍历我的树,并通过从树的某些分支(不是所有分支(的variable2中减去k来更新。我需要在O(n((n=树的大小(中这样做。我想做的是将树转换为"类型"数组,更新所需内容并转换回。但是怎么做呢?

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

以下是您可以做的。

  1. 按顺序遍历并将整个树复制到一个数组中
  2. 更新数组
  3. 对数组进行排序
  4. 在同一棵树上按顺序遍历,并从数组中复制元素
  5. 如果需要,请释放任何内存

时间=O(n) + O(n) + O(nlogn) + O(n) = O(nlogn)

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