看到一个2b-树可能有相同的值,但形状不同,有没有一个算法来遍历这些值并比较两个树是否有相同的键?
关键是,如果它们包含不同的密钥(尽快),就能够进行纾困。
除非同时在两个b树中执行查找,否则递归算法可能行不通。
我见过遍历b-树的算法,但我不想遍历两者,然后比较键,我希望有更聪明的东西,如果有差异的话,会尽早跳出去。
基本上,函数返回true/false。
最佳答案
基本技术是以某种方式拥有一个对象,该对象表示按顺序遍历中的当前点一旦你有了其中的两个,一个用于树的每个实例,你就继续为下一个键注入它们,当这两个对象第一次返回不同的下一个键时,你就完成了。
在C中,您可以使用yield return
进行遍历,每次生成一个键,并跟踪它在树中的位置然后,您可以将其中两个传递给SequenceEquals
,一旦遇到第一个差异,它将立即脱离困境。在java中,您必须自己构建这个机制,但这并不难做到。
关于java - 比较2个b树以查看它们是否包含相同的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14628582/