繁体   English   中英

java中的特定树数据结构

[英]Specific tree data structure in java

我正在尝试用Java实现特定的树数据结构; 我不确切知道这是什么类型的树。 这是我正在尝试做的一个例子:

             -----------------------------
            | Board                       |
            |
            | Node1  Node2  Node3  Node4  |
            |   _      _      _      _
            |  |_|    |_|    |_|    |_|   |
             ---+------+------+------+----
                |      |      |      |
               /       |      |       \
 --------------       ---    ---     -----------
| Board        |       -      -     | Board     |
|                                   |           
| Node1  Node2 |                    | Node1 ... |
|   _      _                        |   _       
|  |_|    |_|  |                    |  |_|  ... |
 ---+------+---                      ---+------+ 
   /       |                            |
   .       .                            .
   .       .                            .
   .       .                            .

所以我创建了两个类: BoardNode

  • 每个Board包含一个NodesArrayList

     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是否正确?

  • 如何指示叶Node 我尝试用null初始化它,但是我得到了一个NullPointerException

谢谢!

回答你的问题:

  • 应该使用作为pNode传递的Node ; 你不需要创建一个新的。
  • Board通过,应该使用pBoard ; 你不需要创建一个新的。
  • 叶节点具有空mBoard 或者,它可能有一个mBoard ,它有一个空的mContent数组。 选择取决于您尚未发布的有关您希望树木如何降低的信息。

您可以考虑折叠您的结构。 目前尚不清楚为什么你不只有一个Node类(使用ArrayList<Node> mContent字段代替mBoard字段)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM