我理解通常树结构用于修改持久化数据结构(创建新节点并替换所有祖先节点)。
但是如果我有一个包含数万个节点的树,我需要修改其中数千个节点,我不想逐个创建数千个新根节点,我只需要一个由同时修改所有节点而产生的新根节点。
例如: 以持久化二叉树为例。在单个更新节点的情况下,它会搜索直到找到节点,创建一个带有修改和旧子节点的新节点,并创建新的祖先节点直到根节点。
在批量更新的情况下,我们可以这样做: 不仅更新单个节点,而是一次性更新1000个节点。
在根节点处,当前列表是完整列表。然后将该列表分成与左节点匹配和与右节点匹配的部分。如果没有匹配到其中一个子节点,则不要向其下降。然后向左节点下降(假设有匹配项),将其搜索列表分成其子节点,并继续进行。当您有一个单独的节点和匹配项时,您会更新它并返回,根据需要替换和更新祖先和其他分支。
这将导致只有一个新根节点,即使它修改了任意数量的节点。