data-structures - 是否可以使用前序和后序序列创建二叉非唯一树?

标签 data-structures

是否可以使用前序和后序序列创建二叉非唯一树?
如果可以,如何做到这一点?例如,我如何制作一棵非唯一的树:

预购:

B C I J K H D E F G

邮购:

I H K J C G F E D B

有多少个?

最佳答案

预购伪代码:

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”的 child
  • “G”必须是最大值(树中最右边的节点)或左子树中的最小值(左子树中最左边的节点) - 在这种情况下“G”必须是叶子,“F”必须是“G”的父级

从后订单中我们可以得出结论:

  • “I”必须是叶子和最小值(树中最右边的节点)。
  • 如果我没有子节点,“H”必须是“I”的父节点(“I”是“H”的左子节点),否则“H”是树中下一个最左边的子节点。

从这里开始,它就像数独:

enter image description here 是的:通过使用前序和后序输出,您只能以一种方式构建树。

关于data-structures - 是否可以使用前序和后序序列创建二叉非唯一树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6286900/

相关文章:

java - java中的简单关系数据库 - 使用什么数据结构?

sql - 为什么要使用 SQL 数据库?

data-structures - 为什么在链接迭代器而不是收集到临时 HashSet 时会得到不一致的结果?

python - Python 的列表方法 append 和 extend 有什么区别?

java - 优先级队列 - 背后更新 key 的影响

algorithm - 为什么当我们将 G 中每条边的成本更改为 c'= log17(c) 时,G 中的每个 MST 仍然是 G' 中的 MST(反之亦然)?

python - 在某些 lisp 语言上,这个 Python 散列写入/访问代码的等效项是什么?

objective-c - 有没有办法强制在 NSArray、NSMutableArray 等上输入?

c - 需要分层文本数据结构解析器建议

arrays - 如何将值添加到存储在 map 中的数组?