问题描述
|
我了解通常如何使用树来修改持久数据结构(创建一个新节点并替换其所有祖先)。
但是,如果我有一棵拥有10,000个节点的树并且需要修改其中1000个节点,该怎么办?我不想遍历并创建1000个新的根,我只需要一个可以立即修改所有内容的新根。
例如:
让我们以一个持久的二叉树为例。在单个更新节点的情况下,它会进行搜索,直到找到该节点,然后使用修改的内容和旧的子节点创建一个新节点,并创建直到根节点的新祖先。
在批量更新的情况下,我们可以这样做:
您将要一次性更新1000个节点,而不仅仅是更新单个节点。
在根节点上,当前列表是完整列表。然后,您可以在与左侧节点匹配的列表和与右侧节点匹配的列表之间进行拆分。如果没有一个与孩子之一匹配,请不要下降。然后,您下降到左侧节点(假设存在匹配项),在其子级之间拆分其搜索列表,然后继续。当您有一个节点和一个匹配项时,可以对其进行更新并进行备份,并根据需要替换和更新祖先和其他分支。
即使修改了任意数量的节点,这也只会导致一个新的根。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)