我正在用 C++ 中的不可变树结构制作可撤销的数据结构。通过共享未更改的子节点,我可以非常有效地推导出新的不可变树。在创建撤消快照时,实际上比可变树更有效。但是,我仍然需要重新创建从根到更新目标的所有节点。这是负担得起的,但我想变得更好。
我看了拉链结构。据我了解,Zipper 专门针对节点的特定位置,如果目标点发生变化,则需要重组。会更贵,因为我需要更新随机节点。
什么样的结构可以满足我的需要?更有效的不可变树随机更新。
更新
正如@SB 提到的,具有反向操作的可变结构将适合我的需求,但由于调试的难度和保持反向操作的正确性,我想避免可变结构。所以我不再寻找可变的方法了。