如果给出以下树结构或类似结构:
我希望返回字符串ZYXWVUT。我知道如何使用二叉树执行此操作,但不能使用多个子节点。任何帮助将不胜感激。
答案 0 :(得分:12)
这称为post-order traversal of a tree:在打印节点本身的内容之前打印树的所有子树的内容。
这可以递归完成,就像这样(伪代码):
function post_order(Tree node)
foreach n in node.children
post_order(n)
print(node.text)
答案 1 :(得分:1)
如果要维护ArrayList(比如node_list)以跟踪当前树节点的节点分支数,则可以从根遍历树,直到找到具有空node_list的节点。这样您就可以识别树的叶节点。递归方法适用于这种情况。我没有测试过代码,但我相信这应该适用于您所要求的内容:
如果您要维护类似于以下类的内容来构建树:
class Node {
String data;
ArrayList<Node> node_list;}
您正在寻找以下递归函数:
public void traverse_tree(Node n){
if(n.node_list.isEmpty()){
System.out.print(n.data);
}
else{
for(Node current_node:n.node_list){
traverse_tree(current_node);
}
System.out.println(n.data);
}
}
基本上你正在看的是树的后序深度优先遍历。
答案 2 :(得分:0)
这样的事情应该这样做
public void traverse(){
for(Child child : this.children){
child.traverse();
}
System.out.print(this.value);
}