Post 预订单、订单和订单后树遍历

Post 预订单、订单和订单后树遍历,post,tree,binary-tree,tree-traversal,preorder,Post,Tree,Binary Tree,Tree Traversal,Preorder,我对顺序、前顺序和后顺序遍历感到困惑,特别是 这一个,预订单:ABAB,后订单:BABA,顺序:AABB 我知道根是Pre和Post的第一个也是最后一个元素,但我不知道如何完成二叉树的构建 你的帖子很模糊,也没有什么意义,但我会在文章的前、后顺序中解释,并为你构建一个二叉树 你的问题没有意义的原因之一是你没有为你在排序中描述的元素建立一个顺序,如果没有一个树来正确显示每个元素的位置(每个元素都是字母吗?为什么它们是重复的),那么ABAB BABA和AABB就毫无意义了 你的问题没有意义的另一个原

我对顺序、前顺序和后顺序遍历感到困惑,特别是 这一个,预订单:ABAB,后订单:BABA,顺序:AABB


我知道根是Pre和Post的第一个也是最后一个元素,但我不知道如何完成二叉树的构建

你的帖子很模糊,也没有什么意义,但我会在文章的前、后顺序中解释,并为你构建一个二叉树

你的问题没有意义的原因之一是你没有为你在排序中描述的元素建立一个顺序,如果没有一个树来正确显示每个元素的位置(每个元素都是字母吗?为什么它们是重复的),那么ABAB BABA和AABB就毫无意义了

你的问题没有意义的另一个原因是,你似乎认为pre、pos和order与创建二叉树有关,但它们没有

,和是的所有类型的算法。也就是说,它们是导航树的方式,而不是创建树。您可以使用这些算法查找元素,或者简单地打印出一棵树的所有内容,这对于只通过链接节点的树尤其有用(例如,一个)

想象一下下面的二叉树(所有示例都相同)

预序遍历是一种树遍历算法,在这种算法中,总是先选择最左边的路径。当你不能走得更远时,你会选择下一条最左边的路径,然后在下一个节点上递归地做同样的事情。在上面的示例树中,预排序遍历将从根开始,(A)向左(A,B)再次向左(D)不能向左,因此将向右(E),最后您将得到以下遍历序列:
A B D E C F G

顺序遍历类似于预顺序遍历,但不是在每一步都显示,而是顺序遍历走到它能走的最左边,然后显示,如果它不能走得足够深,它会返回,显示(因此是“按”顺序),并再次递归地向右尝试相同的事情,直到完成为止。在树示例中,我们实际上先打印d,返回到B,然后打印B,然后是E,然后返回到A,依此类推,因此最终输出将是
dbeeafgc
。注:维基百科的例子可能更有意义,因为它更复杂

在后序中,我们基本上从下往上打印,我们在左子树中找到最深的节点,然后递归地打印其中最深的节点,直到我们完成,转到右子树,最后打印根,例如:
debbfgca
。同样,这个例子对维基百科更有意义,因为它们有一个更复杂的树

如果你想构建一棵树,有很多方法,但这完全取决于你想要什么样的排序结构。您想要二元结构还是n元结构?您关心哪一个元素位于顶部,还是只需要最小/最大值(如堆或二进制堆)?您是否有一个搜索条件,使得树的每个部分的根必须比子树或其父树的根大/小/其他条件?(像一只猫)


如果这还不够,它还可以很好地解释遍历,它还解释了为什么需要不同类型的排序,以便从具有适当连接的节点序列构造树(如果您的初衷是复制二叉树结构)

您的帖子很模糊,没有太多意义,但我将在,pre,发布顺序并为您构建二叉树

你的问题没有意义的原因之一是你没有为你在排序中描述的元素建立一个顺序,如果没有一个树来正确显示每个元素的位置(每个元素都是字母吗?为什么它们是重复的),那么ABAB BABA和AABB就毫无意义了

你的问题没有意义的另一个原因是,你似乎认为pre、pos和order与创建二叉树有关,但它们没有

,和是的所有类型的算法。也就是说,它们是导航树的方式,而不是创建树。您可以使用这些算法查找元素,或者简单地打印出一棵树的所有内容,这对于只通过链接节点的树尤其有用(例如,一个)

想象一下下面的二叉树(所有示例都相同)

预序遍历是一种树遍历算法,在这种算法中,总是先选择最左边的路径。当你不能走得更远时,你会选择下一条最左边的路径,然后在下一个节点上递归地做同样的事情。在上面的示例树中,预排序遍历将从根开始,(A)向左(A,B)再次向左(D)不能向左,因此将向右(E),最后您将得到以下遍历序列:
A B D E C F G

顺序遍历类似于预顺序遍历,但不是在每一步都显示,而是顺序遍历走到它能走的最左边,然后显示,如果它不能走得足够深,它会返回,显示(因此是“按”顺序),并再次递归地向右尝试相同的事情,直到完成为止。在树示例中,我们实际上先打印d,返回到B,然后打印B,然后是E,然后返回到A,依此类推,因此最终输出将是
dbeeafgc
。注:维基百科的例子可能更有意义,因为它更复杂

在后序中,我们基本上从下往上打印,我们在左子树中找到最深的节点,然后递归地打印其中最深的节点,直到我们完成,转到右子树,最后打印根,例如:
debbfgca
。同样,这个例子对维基百科更有意义,因为它们有一个更复杂的树

如果你想构建一棵树,有很多方法,但这完全取决于你想要什么样的排序结构。
     A
   B   C
  D E F G