证明或反驳:如果您对二进制搜索树进行了预先遍历遍历,则可以唯一地确定该二叉搜索树

时间:2017-09-27 19:34:16

标签: algorithm graph tree binary-search-tree traversal

这是我从旧考试中找到的任务,我试着解决,因为他们可以在周五向我提出类似的问题。

对于解决方案,我有廉价的解决方案,但我认为二元搜索树的定义都很重要。

我制作第一棵树:

1
 \
  1
   \
    1

这是第二棵树

    1
   /
  1
 /
1

当你进行预订遍历时,你对两个树都有相同的输出..因为同一个元素,并且都有退化树。但是你没有同一棵树!所以陈述是错误的。

唯一的问题是我的树二叉搜索树...我想是的,因为二元搜索树元素可以有更大/更低的相等元素?

当我问老师他说我度假结束时可以问他,但是假期结束时我的考试结束了,请停下来......对我来说没有好处。

1 个答案:

答案 0 :(得分:1)

鉴于BST的标准定义,您的答案非常好。根据标准定义,BST可以具有重复的元素,并且相同的元素可以在任一子树中。

如果问题意味着没有重复的情况,或者只有左侧(或仅右侧)子树中必须存在重复项,那么预先遍历就足以重建树。

如果不允许重复,则按如下方式递归构造树:将根作为第一个节点,然后使用输入遍历原始遍历的部分,使用节点小于(对于左子树)并且大于(对于右子树)根节点。如果允许重复但受约束为左子树或右子树,则使用相同的过程,但将“或等于”添加到小于或大于,但不是两者。