Java通用树遍历
我要用Java解决一个问题。我有一棵树需要穿过。这是:Java通用树遍历,java,tree,traversal,Java,Tree,Traversal,我要用Java解决一个问题。我有一棵树需要穿过。这是: 1 / \ 1 2 3 1 2 3 / | \ \ 123 123 123 same for those three nodes 现在需要遍历的方式是从根开始,遍历最深的最左边节点(这里是1)和最左边的叶子(1)。之后,它应该再次从根开始跟踪所有数字,这一次到达同一最左节点的下一个叶。。以此类推,也就是从顶部开始,每次一个接一个地到达该节点的所有剩余叶。在跟踪最左侧节点
1
/ \
1 2 3 1 2 3
/ | \ \
123 123 123 same for those three nodes
现在需要遍历的方式是从根开始,遍历最深的最左边节点(这里是1)和最左边的叶子(1)。之后,它应该再次从根开始跟踪所有数字,这一次到达同一最左节点的下一个叶。。以此类推,也就是从顶部开始,每次一个接一个地到达该节点的所有剩余叶。在跟踪最左侧节点的所有叶之后,它应该照常进行(从顶部开始),现在移动到下一个未邀请的节点(此处为2)。。所有的树都是如此。因此,前6条轨迹将是:
111
112
113
121
122
123
... 等等
所有被追踪的号码都需要按照上述方式按顺序追踪和记录。任何人都可以在如何实现算法方面提供帮助?。谢谢。您所描述的内容被称为。你应该知道这不是最有效的算法,有更好的算法,比如 根据您尝试做的事情,甚至可以使用更专业的策略,例如游戏搜索或其他启发式搜索 如果设置为使用深度优先搜索,并希望返回从根节点到该节点的路径,则在找到目标节点后,可以使用以下类似的方法。假设
节点
是您的目标节点
List<Node> path = new ArrayList<Node>();
path.add(node);
while(node.parent != null){
path.add(node.parent);
node = node.parent;
}
return path; //returns a path from {goal,...,root}
List path=new ArrayList();
添加(节点);
while(node.parent!=null){
添加(node.parent);
node=node.parent;
}
返回路径//返回来自{goal,…,root}的路径
您需要的是一个树遍历算法
void traverse(Node root, String path) {
path += root.getValue();
for (Node child : root.getChildren())
traverse(child, path);
// end of current traversal
if (root.getChildren().isEmpty())
System.out.print(path + " ");
}
@是的,你是对的,这是上帝与搜索无关。。到目前为止,虽然没有人知道如何做。。