我正在尝试用Java实现特定的树数据结构;我不确切知道这是什么类型的树。以下是我正在尝试做的一个例子:
-----------------------------
| Board |
|
| Node1 Node2 Node3 Node4 |
| _ _ _ _
| |_| |_| |_| |_| |
---+------+------+------+----
| | | |
/ | | \
-------------- --- --- -----------
| Board | - - | Board |
| |
| Node1 Node2 | | Node1 ... |
| _ _ | _
| |_| |_| | | |_| ... |
---+------+--- ---+------+
/ | |
. . .
. . .
. . .
所以我创建了两个类:Board
和Node
。
每个Board
都由ArrayList
Nodes
组成:
public class Board {
ArrayList<Node> mContent;
Board() {
mContent = new ArrayList<Node>();
}
Board(Board pBoard) {
mContent = new ArrayList<Node>(pBoard.mContent);
}
void add(Node pNode) {
mContent.add(pNode);
}
void add(String pString, Board pBoard) {
Node tNode = new Node(pString, pBoard);
mContent.add(tNode);
}
}
每个Node
都包含String
和对另一个Board
的引用:
public class Node {
String mLabel;
Board mBoard;
Node(){
mLabel = new String();
mBoard = null;
}
Node(String pLabel, Board pBoard){
mLabel = new String(pLabel);
mBoard = new Board(Board);
}
void setBoard(Board pBoard){
mBoard = pBoard;
}
}
我的问题是:
在add(Node pNode)
方法上,是否需要创建新的Node
,然后将其添加到ArrayList
?
在setBoard(...)
方法中,是否需要创建新的Board
,然后将其传递给mBoard
,或者只是mBoard = pBoard
是否正确?< / p>
如何指出一片叶Node
?我尝试使用null
对其进行初始化,但我得到了NullPointerException
谢谢!
答案 0 :(得分:4)
回答你的问题:
Node
作为pNode
传递;你不需要创建一个新的。Board
作为pBoard
传递;你不需要创建一个新的。mBoard
。或者,它可能有一个mBoard
,其中包含一个空的mContent
数组。选择取决于您未发布的关于树木如何降低的信息。您可以考虑折叠您的结构。目前尚不清楚为什么你不只有一个Node
类(用ArrayList<Node> mContent
字段代替mBoard字段)。