我有一棵不是二叉树的树,每个节点有两个以上的孩子,我正在寻找一种遍历树的算法,我在学习数据结构方面真的很新,我知道如何遍历二叉树但我迷路了当涉及到遍历非二叉树时。任何人都可以给我一个提示吗?
问问题
26041 次
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-search或Depth-first-search。
关于这个主题有大量的信息,所以尝试实现这些递归方法之一,如果在此过程中遇到问题,请回来!
于 2013-10-12T19:06:02.787 回答
0
前后顺序的算法与二叉树相同。
没有一般树的有序遍历之类的东西,即没有意义(除非你定义了一些顺序)
于 2013-10-12T20:13:45.643 回答