Data structures 是否可以使用前序和后序序列创建二叉非唯一树?
是否可以使用前序和后序序列创建二叉非唯一树?Data structures 是否可以使用前序和后序序列创建二叉非唯一树?,data-structures,Data Structures,是否可以使用前序和后序序列创建二叉非唯一树?如果可以,如何实现?例如,我如何为以下对象创建非唯一树: 预订单: B C I J K H D E F G 邮购: I H K J C G F E D B 可能有多少个?预订单psedo代码: preorder (tree) { if tree isn't empty then { print key[tree] preorder left[tree] preorder right[t
如果可以,如何实现?例如,我如何为以下对象创建非唯一树: 预订单:
B C I J K H D E F G
邮购:
I H K J C G F E D B
可能有多少个?预订单psedo代码:
preorder (tree)
{
if tree isn't empty then
{
print key[tree]
preorder left[tree]
preorder right[tree]
}
}
邮购为:
postorder (tree)
{
if tree isn't empty then
{
preorder left[tree]
preorder right[tree]
print key[tree]
}
}
因此,按顺序我们可以得出以下结论:
- “B”必须是根
- “C”必须是“B”的孩子
- “G”必须是最大值(树中最右边的节点)或左子树中的最小值(左子树中最左边的节点)——在这种情况下,“G”必须是叶,“F”必须是“G”的父节点
- “I”必须是叶子和最小值(树中最右边的节点)
- “H”必须是“I”的父级(“I”是“H”的左子女),如果我没有子女,则“H”是树中的下一个最左子女
是的:通过使用前序和后序输出,您只能以一种方式构建树。是的,可以构建具有相同前序和后序序列的不同二叉树。要生成这些不同的树,请查找左或右子树为空的子树,然后简单地交换子树 这个最小的例子
a a
/ vs. \
b b
显示两个树,它们都具有预排序
ab
和后排序ba
给定任意两次遍历,您可以构造一个唯一的二叉搜索树,您是希望这样做还是在搜索其他内容?如果不是,请详细说明非唯一树是什么意思?