看到2 b树可能具有相同的值,但形状不同,是否有算法通过值并比较两个树是否具有相同的键?
关键是如果它们包含不同的密钥(尽快),就可以纾困。
除非你在我猜的同时在两个b-tree中执行查找,否则递归算法可能无法工作。
我已经看到遍历b树的算法,但我不想遍历两者,然后比较密钥,我想要更聪明的东西,如果存在差异,将尽早拯救。< / p>
基本上该函数返回true / false。
答案 0 :(得分:2)
基本技术是以某种方式有一个对象,它表示有序遍历中的当前点。一旦你有两个,每个树的一个实例,你只需要为下一个键输入它们,并且第一次两个返回一个不同的下一个键,你就完成了。
在C#中,您使用yield return
进行遍历,一次产生一个密钥,并跟踪它在树中的位置。然后,您可以将其中两个传递给SequenceEquals
,一旦遇到第一个差异,它就会挽救。在Java中,您必须自己构建该机制,但这并不难。
答案 1 :(得分:0)