【发布时间】:2023-01-08 17:21:13
【问题描述】:
标记为 P、Q、R、S、T 的五个节点用于构建二叉树。可以形成的不同二叉树的数量,使得每个有序遍历给出 P,Q,R,S,T 是
我不知道我在测试系列中得到这个问题的确切答案,他们给出的解决方案不正确所以请帮助告诉我如何解决这些问题
【问题讨论】:
标签: algorithm data-structures binary-search-tree permutation gate
标记为 P、Q、R、S、T 的五个节点用于构建二叉树。可以形成的不同二叉树的数量,使得每个有序遍历给出 P,Q,R,S,T 是
我不知道我在测试系列中得到这个问题的确切答案,他们给出的解决方案不正确所以请帮助告诉我如何解决这些问题
【问题讨论】:
标签: algorithm data-structures binary-search-tree permutation gate
首先,观察一个完全的二叉树只有一种可能的排列方式。例如有七个节点并且要求中序遍历按字母顺序排序:
D
B F
A C E G
但是你的问题是有 5 个节点,所以树不完整。这是一棵可能的树:
S
Q T
P R
从左到右阅读,字母的顺序是正确的,但显然不是唯一可能的顺序。这是另一个:
R
Q T
P S
四个可能的叶节点中总是恰好有两个空叶。如果我们用 1 表示叶子,用 0 表示空,则可能是:
0011
0101
1001
1100
1010
0110
所以这是六棵不同的树。最后一个问题是是否存在两棵不同的树,它们填充了相同的节点但在某些节点上具有不同的值(字母)。答案是否定的,那是不可能的,原因与完整树相同:交换任何两个值总是会使树乱序。就像在数组中一样,只有一个顺序,当值都不同时才排序。
【讨论】: