I need to create a tree structure similar as the attached image in Java. I\'ve found some questions related to this one but I haven\'t found a convincing and well explained
import java.util.ArrayList;
import java.util.List;
public class Node {
private List> children = new ArrayList>();
private Node parent = null;
private T data = null;
public Node(T data) {
this.data = data;
}
public Node(T data, Node parent) {
this.data = data;
this.parent = parent;
}
public List> getChildren() {
return children;
}
public void setParent(Node parent) {
parent.addChild(this);
this.parent = parent;
}
public void addChild(T data) {
Node child = new Node(data);
child.setParent(this);
this.children.add(child);
}
public void addChild(Node child) {
child.setParent(this);
this.children.add(child);
}
public T getData() {
return this.data;
}
public void setData(T data) {
this.data = data;
}
public boolean isRoot() {
return (this.parent == null);
}
public boolean isLeaf() {
return this.children.size == 0;
}
public void removeParent() {
this.parent = null;
}
}
Example:
import java.util.List;
Node parentNode = new Node("Parent");
Node childNode1 = new Node("Child 1", parentNode);
Node childNode2 = new Node("Child 2");
childNode2.setParent(parentNode);
Node grandchildNode = new Node("Grandchild of parentNode. Child of childNode1", childNode1);
List> childrenNodes = parentNode.getChildren();