|
|
1
7
如果不假设树中的节点有一个字段将自己标识为内部或叶,您就无法为您的问题找到唯一的答案。该假设或无序列表必须可用,才能找到唯一的树。 在这种情况下,为了找到一个可能的答案,您可以构建一个如下所示的形式的树来匹配任何给定的Postorder列表:(假设Postorder列表是:1 2 3 4 5 6 7 8 9)
现在,您可以使用此树进行预订列表。 假设树中的节点有一个字段标识为内部或叶,我们可以使用此算法从此类树的后序列表中生成一个唯一的树:
|
|
|
2
1
考虑预购遍历的递归结构:
然后我们知道t(r)描述的树的根总是遍历中的第一个节点。 知道这一点,并且知道一个根在一个树中总是比它的子树高,那么考虑一下如何使用这些信息来重建树。递归地思考。
警告:只有当这是一个
二进制搜索树
,它约束节点以便
无论0或2个子级的规则如何,仍存在歧义:
两者都有预购遍历[4 2 1 3 5 6 7] |
|
|
3
1
例如: 您需要将Postorder表单转换为Preorder表单。这可以通过以下方式完成。 邮购:DEBFCA 预购:ABDECF 我们看到A是根。从预排序我们可以确定节点B是左到A的,因此我们创建了两个子类,即(b e d)(c f)。现在,当我们遍历b时,我们把它作为根,我们看到,在b,d存在之后,它意味着d是左到b,e是右到b。现在,我们遍历c,把它作为根。然后f在c之后出现,所以它是左的。 |
|
|
Zevvysan · 为什么我的打印函数之一要删除节点? 8 年前 |
|
|
user9573040 · 递归二叉树高度 8 年前 |
|
|
Dipesh Desai · 在二叉树haskell中搜索值 8 年前 |
|
|
ibrahim · “main”已停止工作-C++[开发人员++] 8 年前 |