如何将AvlTree转换为数组,反之亦然
How to convert AvlTree to array and vice verse?
假设我有一个由两个变量组成的某种类型的AvlTree,如下所示:
class type {
int variable1;
int variable2;
};
假设"type"具有所有必要的运算符,以便我的树按variable2排序。
我想遍历我的树,并通过从树的某些分支(不是所有分支(的variable2中减去k来更新。我需要在O(n((n=树的大小(中这样做。我想做的是将树转换为"类型"数组,更新所需内容并转换回。但是怎么做呢?
为什么不"按顺序"遍历树并将输出数据保存到数组中?阅读可以用相反的方式进行。不应该太难。
以下是您可以做的。
- 按顺序遍历并将整个树复制到一个数组中
- 更新数组
- 对数组进行排序
- 在同一棵树上按顺序遍历,并从数组中复制元素
- 如果需要,请释放任何内存
时间=O(n) + O(n) + O(nlogn) + O(n) = O(nlogn)
如果数组中更新的元素很少,请执行插入排序,将运行时间指定为O(n)
。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 将 char[] 数组转换为字节,然后将字节转换为 int,反之亦然
- 将字节数组 (uint8_t) 转换为单词数组 (uint16_t),反之亦然
- std::memcpy结构,具有TriviallyCopyable类型T的紧密封装成员到T的数组,反之亦然
- 循环数组 - 从最后一个跳到第一个,反之亦然
- 将数组分配给多维数组,反之亦然
- 在数组中找到最大的倍数,反之亦然
- C++-独立于平台的函数,用于将字节数组转换为值,反之亦然
- 在无符号字符数组中读取充满字符串(用换行符分隔)的文件(反之亦然)的最快方法是什么?
- 将多维数组复制到向量,反之亦然