15

我有一棵不是二叉树的树,每个节点有两个以上的孩子,我正在寻找一种遍历树的算法,我在学习数据结构方面真的很新,我知道如何遍历二叉树但我迷路了当涉及到遍历非二叉树时。任何人都可以给我一个提示吗?

4

4 回答 4

25

在非二叉树中,会有一个Vector或一些其他结构引用所有子级。制作一个递归方法,如下所示:

public void traverse(Node child){ // post order traversal
    for(Node each : child.getChildren()){
        traverse(each);
    }
    this.printData();
}

类似的东西。

于 2013-10-12T19:05:49.830 回答
8

好吧,当遍历二叉树时,先访问父节点,然后递归遍历左子树,然后递归遍历右子树。对于具有两个以上孩子的树,您递归地遍历每个孩子为首的子树。您将在 for 循环中进行递归调用。

于 2013-10-12T19:06:53.047 回答
7

您需要使用递归,因为您无法确定每个节点有多少个子节点(宽度)或树的距离(深度)。根据您想要遍历的方式,您可以使用 Breadth-first-searchDepth-first-search

关于这个主题有大量的信息,所以尝试实现这些递归方法之一,如果在此过程中遇到问题,请回来!

于 2013-10-12T19:06:02.787 回答
0

前后顺序的算法与二叉树相同。
没有一般树的有序遍历之类的东西,即没有意义(除非定义了一些顺序)

于 2013-10-12T20:13:45.643 回答