我有课EightPuzzle
。
public class EightPuzzle {
int[][] board = new int[3][3];
//code here
}
我在哪里上课Node<T>
哪里T
是对象EightPuzzle
。如果我有一个Node<EightPuzzle> parent
,我如何设置它的 child ?是 child 的 child 吗?依此类推,如果 children 是 ArrayList<Node<EightPuzzle>>
?
public class Node<T> {
private List<Node<T>> children = new ArrayList<Node<T>>();
private Node<T> parent = null;
private T data = null;
public Node(T data) {
this.data = data;
}
public Node(T data, Node<T> parent) {
this.data = data;
this.parent = parent;
}
public List<Node<T>> getChildren() {
return children;
}
public void setParent(Node<T> parent) {
parent.addChild(this);
setParentInternal(parent);
}
public void setParentInternal(Node<T> parent){
this.parent = parent;
}
public void addChild(T data) {
addChild(new Node<T>(data));
}
public void addChild(Node<T> child) {
child.setParentInternal(this);
this.children.add(child);
}
//may not use this and set data
public T getData() {
return this.data;
}
public void setData(T data) {
this.data = data;
}
public boolean isRoot() {
return (this.parent == null);
}
public boolean isLeaf() {
if(this.children.size() == 0)
return true;
else
return false;
}
public void removeParent() {
this.parent = null;
}
最佳答案
您可能想要使用递归方法来执行如下所示的操作。
示例:
public void assignChildren(Node node) {
List<Node> children = ... // somehow decide the children here
node.setChildren(children);
// This is just a for each loop using a java 8 method reference
// to make a recursive call
children.forEach(this::assignChildren);
}
编辑: 将评论移至答案
如果您无法在类中添加 setChildren(...)
方法,那么您始终可以迭代子级,将它们一一添加到节点
关于java - 如何在 Java 中设置/赋予父节点其子节点、其子节点的子节点等等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42677335/