当前位置: 首页 > 知识库问答 >
问题:

从前序和后序遍历构建树

孔硕
2023-03-14

如果我有前序和后序遍历,我可以构建一个不一定是二叉树的树吗?类似的东西:

预购:KLMOPN

后订单:LOPMNK

构建:

   K
 / | \
L  M  N
  / \
 O   P

我已经读到,如果没有二叉树的顺序遍历,这是不可能的,但是对于非二叉树,有可能只使用前序和后序遍历吗?

共有1个答案

虞华翰
2023-03-14

如果树是在节点中完成的(假设它是一个三节点树,左、中、右)。您将编写一个递归函数。

Void Transverse(Node n){
if( n.left ==null && n.middle==null && n.right ==null){
 System.out.print(n.value);
 return;

}
Transverse(left);
Transverse(middle);
Transverse(right);
System.out.print(n.value);

}

这是一些伪代码(我假设OP来自M)。这会从你展示的树上打印出LOPMNK。

k-

这是它发生的顺序。

 类似资料:
  • 本文向大家介绍C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法,包括了C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 深度遍历改变顺序就OK了 #coding:utf-8 #二叉树的遍历 #简单的二叉树节点类 class Node(object): def __init__(self,value,left,right): self.value = value self.left = left self.right = right #中序遍历:遍历左子树,访问当前节点,遍历右子树

  • 我在编码挑战中遇到了一个问题。 完整二叉树是一种二叉树,其中除叶节点外的每个节点都有两个子节点,且树的最后一级边高度有叶节点。 您的任务很简单,给定完整二叉树的遍历,请按顺序遍历打印其

  • 从顺序和后序遍历迭代构造二叉树。 我已经了解了如何使用递归,但我正在寻找一个迭代构造二叉树的答案。 我为inorder和preorder编写了一个算法,但我想知道如何修改inorder和postorder的算法? 注意:它是伪代码,“=”意味着“==” 节点: 二叉树: 子算法树(前序、有序) pre:preorder:Int[],inoorder:Int[] 末端子算法 编辑:我找到了答案

  • 二叉树的预序遍历是{8,5,9,7,1,12,4,11,3},其顺序是{9,5,1,7,12,8,4,3,11}。用它构造二叉树并执行级别顺序遍历。最后构造一个二叉搜索树(BST),从左到右依次获取在上述级别顺序遍历中出现的键值。这个BST的级别顺序遍历是什么?

  • 我正试图弄清楚如何使用树遍历来唯一地识别一棵树,问题的关键似乎是这棵树是香草二叉树(BT),还是它也有更严格的规定二进制搜索树(BST)。这篇文章似乎表明,对于BT,单一的顺序、前序和后序遍历不会唯一地识别树(在这种情况下唯一地意味着键的结构和值)。以下是文章的快速摘要: BTs 1。我们可以用前序-序和后序-序唯一地重构BT。 2。如果我们还规定遍历跟踪节点的空子节点,那么我们也可以使用前序后序