我正在尝试在Java中实现一种特定的树形数据结构,但我不确定这是什么类型的树。以下是我尝试执行的示例:
-----------------------------
| Board |
|
| Node1 Node2 Node3 Node4 |
| _ _ _ _
| |_| |_| |_| |_| |
---+------+------+------+----
| | | |
/ | | \
-------------- --- --- -----------
| Board | - - | Board |
| |
| Node1 Node2 | | Node1 ... |
| _ _ | _
| |_| |_| | | |_| ... |
---+------+--- ---+------+
/ | |
. . .
. . .
. . .
因此,我创建了两个类:Board
和Node
。
Each
Board
consists of anArrayList
ofNodes
: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); } }
Each
Node
consists of aString
and a reference to anotherBoard
: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
就可以了?如何表示叶子节点?我尝试用
null
进行初始化,但是却得到了NullPointerException
。
Board
的目的有点令人困惑。通常,树中的节点由一个名为Node
的类表示,该类包含对需要保存的数据的引用以及对其子节点和父节点的引用。即考虑将Board
合并到Node
中。 - Trevor Freeman