Java 从下至上扫描树结构?
如果给定以下树结构或类似结构:Java 从下至上扫描树结构?,java,algorithm,tree,Java,Algorithm,Tree,如果给定以下树结构或类似结构: 我希望返回字符串ZYXWVUT。我知道如何使用二叉树来实现这一点,但二叉树不能包含多个子节点。任何帮助都将不胜感激。像这样的东西就可以了 public void traverse(){ for(Child child : this.children){ child.traverse(); } System.out.print(this.value); } 这称为:在打印节点本身的内容之前,先打印树的所有子树的内容 这可
我希望返回字符串ZYXWVUT。我知道如何使用二叉树来实现这一点,但二叉树不能包含多个子节点。任何帮助都将不胜感激。像这样的东西就可以了
public void traverse(){
for(Child child : this.children){
child.traverse();
}
System.out.print(this.value);
}
这称为:在打印节点本身的内容之前,先打印树的所有子树的内容
这可以递归完成,如下所示(伪代码):
如果要维护ArrayList(例如node_list)以跟踪从当前树节点分支的节点数,则可以从根遍历树,直到找到具有空node_list的节点。这样,您将能够识别树的叶节点。递归方法适用于这种情况。我还没有测试代码,但我相信这应该适用于您提出的问题: 如果您正在维护类似于以下类的内容以构建树:
class Node {
String data;
ArrayList<Node> node_list;}
本质上,您所看到的是树的后序深度优先遍历。您将本质上寻找一种“反向”宽度优先算法。编辑:只需阅读树,如果您正在查找
ZYXWVUT
,那么这只是一个深度优先列表…看起来像是postorder遍历,我想澄清一下:您想按节点在树中的深度打印节点吗?因为仅凭你的例子,说出你的问题是很复杂的。编辑成包含一张图片,希望你不介意。至于OP所关心的“我知道如何处理二叉树,但不能处理多个子节点的二叉树”:我认为树遍历可以处理任意数量子节点的树。
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);
}
}