Algorithm 从顺序遍历中查找前序?

Algorithm 从顺序遍历中查找前序?,algorithm,data-structures,tree,traversal,inorder,Algorithm,Data Structures,Tree,Traversal,Inorder,我在四天前遇到了一道中考题,我无法理解 假设我们有一个给定的答案,当我们有一个顺序遍历一棵树,那么为什么我们会找到解决方案的情况下,一个顺序遍历。我有下面的例子:当按顺序遍历一棵树时,结果是eac K F H D B G 预订单遍历将返回什么 a. FAEKCDBHG b. FAEKCDHGB c. EAFKHDCBG d. FEAKDCHBG 谁能以学习的方式帮助我 编辑: 我知道答案是:FAEKCDHGB。但这是如何计算的呢?答案尚未确定 看看那两棵树: E \ A \

我在四天前遇到了一道中考题,我无法理解

假设我们有一个给定的答案,当我们有一个顺序遍历一棵树,那么为什么我们会找到解决方案的情况下,一个顺序遍历。我有下面的例子:当按顺序遍历一棵树时,结果是
eac K F H D B G

预订单遍历将返回什么

a. FAEKCDBHG
b. FAEKCDHGB
c. EAFKHDCBG
d. FEAKDCHBG
谁能以学习的方式帮助我

编辑:
我知道答案是:FAEKCDHGB。但这是如何计算的呢?

答案尚未确定

看看那两棵树:

 E
  \
   A
    \
     C 
      \
       K
        \
         F 
          \
           H 
            \
             D 
              \
               B
                \
                 G
以及:

这两棵树具有相同的顺序遍历,但第一棵树具有
EACKFHDBG
的预顺序遍历,而第二棵树具有
AECKFHDBG
的顺序遍历

因此,给定一个顺序遍历,有远远不止一个可能的二叉树适合该遍历。这是因为有
n可能的排列(以及顺序遍历),而。这保证()有(至少一个)符合多个树的顺序遍历。

因此顺序为:

E A C K F H D B G
并且预订单必须来自:

a. FAEKCDBHG
b. FAEKCDHGB
c. EAFKHDCBG
d. FEAKDCHBG
您应该继续为这些选项中的每一个绘制树,同时使其适合顺序遍历,并查看哪一个是可能的

为此,对于前序遍历中的每个字符,围绕该字符将前序遍历分成两部分

a.

我们知道
F
必须是根。围绕
F
拆分顺序遍历:

        | F | 
 E A C K     H D B G
前序遍历中的下一个字符是
A
。围绕
A
拆分包含
A
的子树:

            | F | 
     | A |        H D B G
    E     C K
下一个是
E
。没什么可分割的。下一个是
K

            | F | 
     | A |        H D B G
    E     C
            K
下一个是
C
。没什么可分割的

下一个是
D

            | F | 
     | A |        | D |
    E     C      H     B G
            K
下一个是
B

            | F | 
     | A |        | D |
    E     C      H     B 
            K            G
我们完成了,就不可能再有分裂了。现在在此树上运行预订单遍历,您将得到:

F A E C K D H B G

这不是我们开始的,所以我们达成了一个矛盾。因此,它不能是a。对其他树也这样做。

可能的b树之一是:

因此,预顺序遍历返回:

H K A E C F B D G

另一个是:

前序遍历给出的结果:

H A E K C F B D G

另一个问题是:

前序遍历给出的结果:

kaechfbdg

,这不是你的选择。欢迎任何人发表评论,因为我无法为给定的顺序遍历生成任何其他二叉树


我在考试中也遇到过这个问题,但我从谷歌搜索中知道b是这个问题的答案。谢谢你的回答,但我想我们必须多加考虑。我想。实际上你把最后一句倒过来了。二叉树的数目是一个加泰罗尼亚数,它只以指数形式增长(大约4^n)。N更大(事实上,不难看出任何排列只会产生一个二叉搜索树,但多个排列可以适合同一个未标记树)。@ErickWong This(Catalan)是具有相同节点的二叉树的数量(即,您只关心拓扑,而不关心每个节点的标记).@Prof.KosiNoura-是的。哇,今天我勾选了错误的答案后,我明白了怎么做…:)第三步中子树的根元素不应该是K,它的左子元素不应该是C吗?
F A E C K D H B G