我有一个 Java 问题要解决。我有一棵需要遍历的树。在这里:
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 ……等等
所有被追踪的号码都需要按照上述方式依次追踪记录。任何人都可以帮助解决如何实现它的算法?谢谢。
最佳答案
您需要的是树遍历算法。
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 + " ");
}
关于Java 泛型树遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10372036/