gpt4 book ai didi

java - 迭代n层链表Java

转载 作者:行者123 更新时间:2023-12-01 16:47:39 25 4
gpt4 key购买 nike

我有一棵带有节点的树,每个节点都包含一个带有节点的列表,这些列表中的每个节点都包含节点...它可以有 10 层深,大约有 100 个节点对象。

我尝试迭代查找所有单独的节点对象,但大多数指南都涵盖二叉树..这真是令人难以承受。如果有人有一些伪代码或者可以指出我正确的方向,我将非常高兴。下面的类(很抱歉格式错误):

节点

public class Node {
public String text;
public LinkedList<Node> nodes;

public Node() {
this.nodes = new LinkedList<Node>();
}

public Node(String data) {
this();
this.text = data;
}
}

public class Tree {
public LinkedList<Node> nodes;
public String text;

public Tree() {
nodes = new LinkedList<Node>();
}

public Tree(String data) {
this();
this.text = data;
}
}

计划

public class Main {

public static void main(String[] args) {

LinkedList<Tree> trees = new LinkedList<Tree>();

trees.add(new Tree("Root 1"));

trees.get(0).nodes.add(new Node("Node 1"));
trees.get(0).nodes.add(new Node("Node 2"));
trees.get(0).nodes.add(new Node("Node 3"));

trees.get(0).nodes.get(0).nodes.add(new Node("Node 1:Child 1"));
trees.get(0).nodes.get(1).nodes.add(new Node("Node 2:Child 1"));
trees.get(0).nodes.get(2).nodes.add(new Node("Node 3:Child 1"));

for (Tree tree : trees) {
tree.nodes.. // find all node-objects
}
}
}

最佳答案

这可以通过递归来完成。由于最大深度为 10,最大元素数 = 100,因此递归不会产生任何性能问题。执行此操作的示例代码:

List<Node> flattenTree(List<Node> nodes){
List<Node> allNodes=new LinkedList<>(nodes) ;
for(Node node:nodes){
{
if(node.getNodes()!=null)
allNodes.addAll(flattenTree(node.getNodes()));
}
return allNodes;
}

使用以下方式调用:

List<Node> allNodes = flattenTree(tree.getNodes);

allNodes 将包含该树的所有节点。

关于java - 迭代n层链表Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46955270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com