gpt4 book ai didi

c++ - 一种使用 O(1) 将所有条目复制和存储在平衡二叉搜索树中的方法

转载 作者:行者123 更新时间:2023-11-28 06:42:55 25 4
gpt4 key购买 nike

我正在用 C++11 实现二叉搜索树。我想添加一个功能,使标记具有恒定时间复杂度的数据结构的不同版本成为可能。

我考虑的是向根节点添加另一个名为“name”、“key”或“mark”的属性——因此可以使用 O(1) 访问。但是要保存树版本我必须

  1. 创建根的拷贝(我想创建一个新的二叉搜索树实例,然后简单地将我要复制的树分配给这个新实例)
  2. 将复制的根存储在一个数组中

如果那些存储的根只有读访问权限就足够了。但现在我的问题是:我可以在不增加时间复杂度的情况下执行这两个步骤吗?

下面有一个小草图说明了这个过程。

enter image description here

非常感谢您的帮助。

花生花生

最佳答案

我想你要找的是 persistent BST .这允许在 O(1) 时间内“复制”(只需复制一个指针),同时使用与普通 BST 相同的 big-O 时间执行所有其他 BST 操作。主要区别在于,过去占用 O(1) 空间的操作现在占用 O(lg n) 空间,至少当树的旧版本已存储在某处时。

(您可以使用 shared_ptr 轻松地在 C++ 中实现持久数据结构。)

关于c++ - 一种使用 O(1) 将所有条目复制和存储在平衡二叉搜索树中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25606851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com