2017-03-08 233 views
0

我有一個班EightPuzzle如何在Java中設置/爲父節點設置子節點,子節點的子節點等等?

public class EightPuzzle { 

int[][] board = new int[3][3]; 
//code here 
} 

如果我有一個類Node<T>其中T爲對象EightPuzzle的。如果我有一個Node<EightPuzzle> parent,我該如何設置它的孩子?它的孩子的孩子?等等,如果孩子是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; 
} 
+0

你想要設置什麼? – 4castle

+0

試圖設置parent.children與對象EightPuzzle並設置他們的孩子等 –

+0

您是否嘗試過創建'節點'對象並將它們與'addChild'或'setParent'連接在一起?我不明白你卡在哪裏。 – 4castle

回答

2

您可能希望對下面的東西使用遞歸方法。

例子:

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(...)方法添加到您的類,那麼你永遠可以遍歷孩子把它們添加到節點一個接一個

+0

對不起,當我只完成了一半的工作時,意外地提交了滴答聲和單調的答案。如果你不能在你的類中添加一個'''setChildren(...)'''方法,那麼你總是可以迭代將它們添加到節點的子節點。 –

+0

你需要遞歸的基本情況。 –

+0

如果有些事情需要添加,您可以編輯您的答案。 – 4castle

相關問題