Binary tree 查找仅按顺序遍历给定的二叉树

Binary tree 查找仅按顺序遍历给定的二叉树,binary-tree,inorder,preorder,Binary Tree,Inorder,Preorder,我得到了一个顺序遍历,需要找到一个二叉树。我提到了我的网站,大多数人说这是不可能的。然而,我认为非唯一二叉树是可能的。我能用刚才给出的顺序遍历找到二叉树吗?如果没有,我可以从给定的顺序遍历中找到相应的预顺序遍历吗 我试图通过选择顺序的中心节点作为根来将顺序转换为预顺序,但我不确定它是否正确。请引导我 谢谢。只考虑到节点的顺序遍历,没有问题中的更多信息,您可以找到一个二叉树,但正如您所说的,不会有唯一的解决方案(特别是如果树不需要平衡的话)。因此,您可以再次找到预顺序遍历 例如,如果顺序遍历是[1

我得到了一个顺序遍历,需要找到一个二叉树。我提到了我的网站,大多数人说这是不可能的。然而,我认为非唯一二叉树是可能的。我能用刚才给出的顺序遍历找到二叉树吗?如果没有,我可以从给定的顺序遍历中找到相应的预顺序遍历吗

我试图通过选择顺序的中心节点作为根来将顺序转换为预顺序,但我不确定它是否正确。请引导我


谢谢。

只考虑到节点的顺序遍历,没有问题中的更多信息,您可以找到一个二叉树,但正如您所说的,不会有唯一的解决方案(特别是如果树不需要平衡的话)。因此,您可以再次找到预顺序遍历

例如,如果顺序遍历是
[1,2,3,4,5,6,7,8]
,那么即使树是平衡的,根节点也有多种可能性(即4或5)。如果不需要平衡树,则可以选择其中任何一个作为根节点

以下是任意选择4作为根节点后可以构建的非平衡树的示例:

      4
     /  \
    3    6
   /    / \
  2    5   7
 /          \
1            8
此树的预顺序遍历将产生
4,3,2,1,6,5,7,8
。同样,如果您只需要找到一个二叉树,那么这与将1设置为根节点并将其他所有节点设置为正确节点一样有效:

1
 \
  2
   \
    3
     \
      4
       \
        5
         \
          6
           \
            7
             \
              8

此树的预序遍历将是
1,2,3,4,5,6,7,8
。由于这些树都生成相同的按序遍历,但不同的预序遍历,因此不能保证给定的按序遍历有一个唯一的树,甚至不能保证有一个唯一的预序遍历。

对于多个节点,没有包含按序遍历的唯一二叉搜索树


但是如果你想要一棵树,那么只需对有序序列执行随机洗牌,然后将得到的随机序列插入到二叉搜索树中

那么我如何按给定的顺序找到二叉树呢?你能给我解释一下吗?谢谢。@Nisarg Patel澄清了Milo上面所说的,没有什么能阻止你拥有一个只使用左分支或右分支的“二叉树”。即使是在平衡二叉树的情况下,除非您正好有2^n-1个分支,否则您可能会选择左或右子代作为总体。考虑到所有这些,预排序不是唯一的,因为它取决于树中节点的排列。如果您使用您喜欢的任何安排构建二叉树,那么您可以基于该特定树构建预订单列表。