Algorithm 不能从给定的按序/前序/后序遍历构造任何树

Algorithm 不能从给定的按序/前序/后序遍历构造任何树,algorithm,data-structures,tree,Algorithm,Data Structures,Tree,我知道,如果没有顺序和前序/后序遍历,就无法构造树。因为对于给定的树(仅按顺序/前顺序/后顺序),可能会生成更多的树。是否有任何算法或机制可以从给定的(仅按序/前序/后序遍历)计算唯一树的数量 使用给定的顺序遍历可以构造多少唯一树 Eg : a b c d e f g this is my Inorder traversal. 我试过他们是谷歌,但没有一个解释是清楚的 非常感谢您的帮助……算法如下: 设,p(N)表示具有N节点的树的数量。让节点的索引为1,2,3,… 现在,让我们选择树根。任

我知道,如果没有顺序和前序/后序遍历,就无法构造树。因为对于给定的树(仅按顺序/前顺序/后顺序),可能会生成更多的树。是否有任何算法或机制可以从给定的(仅按序/前序/后序遍历)计算唯一树的数量

使用给定的顺序遍历可以构造多少唯一树

Eg : a b c d e f g this is my Inorder traversal. 
我试过他们是谷歌,但没有一个解释是清楚的


非常感谢您的帮助……

算法如下:

设,
p(N)
表示具有
N
节点的树的数量。让节点的索引为
1,2,3,…

现在,让我们选择树根。任何给定的
N
节点都可以是根节点。假设节点
i
已被选为根。然后,顺序序列中
i
左侧的所有元素必须位于
左子树中。同样,右翼

因此,总的可能性是:
p(i-1)*p(N-i)

在上述表达式中,
i
的变化范围为
1到N

因此,

P(N) = P(0)*P(N-1) + P(1)*P(N-2) + P(2)*P(N-3)....
基本情况将是:

P(0) = 1 
P(1) = 1

因此,这可以通过使用
动态规划
来解决。算法如下:

设,
p(N)
表示具有
N
节点的树的数量。让节点的索引为
1,2,3,…

现在,让我们选择树根。任何给定的
N
节点都可以是根节点。假设节点
i
已被选为根。然后,顺序序列中
i
左侧的所有元素必须位于
左子树中。同样,右翼

因此,总的可能性是:
p(i-1)*p(N-i)

在上述表达式中,
i
的变化范围为
1到N

因此,

P(N) = P(0)*P(N-1) + P(1)*P(N-2) + P(2)*P(N-3)....
基本情况将是:

P(0) = 1 
P(1) = 1

因此,这可以通过使用
动态规划

来解决。请注意,特定的遍历只是标记树中节点的一种方式,因此对于相同长度的任意两次遍历,可能的二叉树的数量是相同的。具有
n
节点的二叉树的数量由
n-1
st给出。

注意,特定的遍历只是标记树中节点的一种方式,因此对于任何两个相同长度的遍历,可能的二叉树的数量都是相同的。具有
n
节点的二叉树的数量由
n-1
st.

公式给出

(2n)!/(n) !!(n+1)

2n*C(n)/(n+1)

给出任意给定按序/前序/后序遍历的可能二叉树数。

公式

Eg : a b c d e f g this is my Inorder traversal. 
(2n)!/(n) !!(n+1)

2n*C(n)/(n+1)


为任何给定的按序/前序/后序遍历提供可能的二叉树数。

如果没有按序和按序/后序遍历,就无法构造树。
这是一条粗体语句:给定的键在子树中是唯一的,它们以前序(等价的后序)为根以及从左到右(显式或按顺序(搜索树))的序列信息,可以毫不含糊地重建树。(仔细想想,这似乎需要对二叉树进行限制(用inoorder表示)。(我认为没有两个相等的键父键和子键就足够了,找到一个线性结构看起来是一个挑战。)
如果没有索引遍历和前序/后序遍历,就无法构造树
这是一条粗体语句:给定子树中唯一的键,它们以前序(等价后序)为根,并从左到右(显式或按顺序(搜索树))提供有关其序列的信息,人们可以毫不含糊地重建一棵树。(仔细想想,这似乎需要对二叉树进行限制(用inoorder表示)。(我认为没有两个相等的键父键和子键就足够了,找到一个线性结构看起来是一个挑战。)
Eg : a b c d e f g this is my Inorder traversal.