java - 比较 2 个 b 树以查看它们是否包含相同的值

标签 java algorithm b-tree

看到 2 个 b 树可能具有相同的值,但形状不同,是否有一种算法可以遍历这些值并比较两棵树是否具有相同的键?

重点是如果它们包含不同的 key (尽快),则能够摆脱困境。

我猜除非您同时在两个 b 树中执行查找,否则递归算法可能无法工作。

我见过遍历 B 树的算法,但我不想遍历两者,然后比较 key ,我想要一些更智能的东西,如果有差异,它会尽快退出。

基本上该函数返回 true/false。

最佳答案

基本技术是以某种方式拥有一个表示中序遍历中当前点的对象。一旦你有了其中两个,一个用于树的每个实例,你就可以继续为下一个键抽取它们,当两个键第一次返回不同的下一个键时,你就完成了。

在 C# 中,您将使用 yield return 进行遍历,一次产生一个键,并跟踪它在树中的位置。然后,您可以将其中两个传递给 SequenceEquals,它会在遇到第一个差异时立即退出。在 Java 中,您必须自己构建该机制,但这并不难。

关于java - 比较 2 个 b 树以查看它们是否包含相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14628582/

相关文章:

java - 动态 JComboBox 大小

Java:如何在反转分割字后将分隔符读回字符串?

algorithm - 为什么删除文件以便更快地删除它们很重要?

java - 从 json 对象中获取值

java - Java中String CompareTo函数的时间复杂度是多少?

javascript - JavaScript 上的插入排序算法

.net - 我应该使用什么树结构来建立索引?

concurrency - POSIX 的 read() 和 write() 系统调用是原子的吗?

java - glfwGetWindowSize 结果为 SIGSEGV (LWJGL)

algorithm - 线性探测中不同探针序列的数量