我有一棵不是二叉树的树,每个节点都有2个以上的孩子,我正在寻找一个遍历树的算法,我是学习数据结构的新手,我知道如何遍历二叉树但是在遍历非二叉树时,我迷路了。 任何人都能给我一个暗示吗?
答案 0 :(得分:21)
在非二叉树中,将有Vector
或其他一些引用所有子项的结构。像这样制作一个递归方法:
public void traverse(Node child){ // post order traversal
for(Node each : child.getChildren()){
traverse(each);
}
this.printData();
}
这些方面的东西。
答案 1 :(得分:8)
您需要使用递归,因为您无法确定每个节点(广度)的子项数或树的行程(深度)。根据您要遍历的方式,您可以使用Breadth-first-search或Depth-first-search。
有关此主题的大量信息,请尝试实施其中一种递归方法,如果您遇到麻烦,请回来!
答案 2 :(得分:8)
好吧,当遍历二叉树时,按顺序访问父节点,然后递归遍历左子树,然后递归遍历右子树。对于一个有两个以上孩子的树,你递归地遍历每个孩子所领导的子树。你可以在for循环中进行递归调用。
答案 3 :(得分:1)
预发布顺序的算法与二叉树相同 对于一般树没有顺序遍历这样的事情,即没有意义(除非你定义一些顺序)