ich den folgenden Code (Entschuldigungen ist es ein wenig lang) haben, die funktioniert:Einfügen von Teilbäume an einen Baumknoten
public class Node {
public String name;
public List<Node> children = new ArrayList<>();
}
private Node root = new Node();
public static void main(String[] args)
{
TestCreateHierarchy obj = new TestCreateHierarchy();
obj.run();
}
public void run()
{
List<List<String>> objects = new ArrayList<>();
String[] str = {"Person","Manager","Hourly","New"};
objects.add(Arrays.asList(str)) ;
String[] str2 = {"Person","Manager","Salary","Hello"};
objects.add(Arrays.asList(str2)) ;
String[] str3 = {"Person","Manager","Salary", "New"};
objects.add(Arrays.asList(str3)) ;
// String[] str4 = {"Person","Manager","Salary", "New", "John"};
// objects.add(Arrays.asList(str4)) ;
root.name = "ROOT";
for (List<String> seq : objects) {
LOG.debug("------------- NEW SEQUENCE -----------");
LOG.debug(seq);
LOG.debug("--------------------------------------");
insert(seq);
// break;
}
LOG.debug(root.children.size() + " <-- should be 1 ");
}
public Node createNode(List<String> seq, Integer start)
{
if (start >= seq.size())
return null;
Node node = new Node();
node.name = seq.get(start);
node.children.add(createNode(seq, start+1));
return node;
}
public void insert(List<String> seq) {
List<Node> children = root.children;
// Where should we start to build the tree (how
// deep into the sequence?)
int start = 0 ;
// Find the right place to add
for (int i=0; i<seq.size(); i++) {
boolean foundMatchingNode = false;
// if (children.size() == 0)
// continue;
if (children.size() > 0) {
for (Node node : children) {
LOG.debug("HERE --> " + node.name);
if (node.name.equals(seq.get(i))) {
children = node.children;
foundMatchingNode = true;
break;
}
}
}
if (!foundMatchingNode) {
children.add(createNode(seq,i));
break;
}
}
}
Mein Problem ist, dass, wenn ich den str4
Teil Kommentar-, erhalte ich ein NullPointerException
Bezug zu der insert
Methode, speziell zu dem for (Node node : children)
Teil.
Was muss ich ändern, damit dieser Code mit verschiedenen Hierarchietiefen funktioniert?
Können Sie bitte erklären, was Sie zu tun versuchen? (sei spezifisch ... erkläre, was du erwartest, dass der 'Baum' nach jedem Schritt aussieht) – HeavyE