java - java中具体的树数据结构

标签 java data-structures arraylist pass-by-reference

我正在尝试用 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

谢谢!

最佳答案

回答你的问题:

  • Node传递为 pNode应该使用;你不需要创建一个新的。
  • Board传递为 pBoard应该使用;你不需要创建一个新的。
  • 一个叶节点有一个空的mBoard .或者,它可以有一个 mBoard有一个空的 mContent大批。选择取决于您尚未发布的有关您希望树木如何触底的信息。

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

关于java - java中具体的树数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18137689/

相关文章:

Java 8 : Calculate difference between two ZonedDateTime

java - 如何以编程方式调用 swagger codegen?

java - 代码没有显示错误,但不会发送结果

java - arraylist.remove 无法正常工作

java - debian 蓝牙 bluecove java7 不工作

java - 在java中安全地读取文件

c++ - 比较C++中的结构

java - 在内存中存储父子映射。有效地为 parent 列出所有可达的 child

c - 用于非均匀大小超球体中最近邻搜索的快速空间数据结构

java - 在集合中查找编辑