【发布时间】:2015-03-04 18:31:38
【问题描述】:
假设我有一棵像这样的二叉树 -
5
/ \
/ \
/ \
/ \
2 8
/ \ / \
/ \ / \
1 3 6 9
\ \ \
4 11 10
现在我有一个随机生成器,它将生成一个介于 1 到树大小之间的数字(在本例中为 10)。基于随机生成器生成的随机值,我必须从树中返回节点(假设生成器给定 7,所以我返回第 7 个节点(值 11),进行中序遍历)。明天我再向树中添加 4 个节点。如何保持一致性?与中一样,为随机值返回树中的相同节点。中序遍历会创建不同的数组,索引的值会发生变化。
【问题讨论】:
-
中序遍历是我的方法,但是一旦我添加更多节点,它就不会保持一致。
-
一致性在这里意味着什么?在示例树中,如果随机数为 7,则它返回第 7 个元素,即 7(很多个 7!)如果明天您插入值 0、3.5、11 和 14,您是否仍然 如果随机数是 7,想要返回 7?或者您想返回有序遍历中的第 7 个数字(现在是 5)。 (请注意,中序遍历将始终按排序顺序生成元素。)
-
这应该是一个有效的二叉搜索树吗?如果是,则 11 放错地方了。
-
不,它只是任何二叉树。这里的树看起来像 BST,但问题是二叉树。
标签: java algorithm random data-structures binary-tree