【问题标题】:How to add multiple child nodes to a tree如何将多个子节点添加到树中
【发布时间】:2020-11-14 15:40:15
【问题描述】:

我正在开展一个项目,以创建具有 2 个以上子节点的树。我知道在创建二叉树时,我们可以只创建一个左节点和一个右节点来充当子节点,但是当我在网上寻找创建树的帮助时,我找到的每个解决方案都在谈论创建二叉树树。我知道创建树的部分意味着您需要创建子节点的数组或数组列表,但我不明白如何将数据放入该数组或如何“连接”数组子节点到我的父节点?

这是我目前拥有的代码。我知道这不是很多,但我刚开始这个项目就很挣扎。

class Node
{
    public int data; //data for storage
    public Node[] children;//array will keep children
    public Node parent;//parent to start the tree

    public Node(, int data)//constructor will store data and children(I think?)
    {
    }
}

public class Tree //main class will implement everything in Node
{
}

如何以及从何处开始将我的子节点连接到我的父/根节点的过程?

【问题讨论】:

    标签: java tree parent children root-node


    【解决方案1】:

    将子项存储在列表中不会出现数组重新生成问题,但您也可以使用数组。 您也可以直接在构造函数中初始化数组,或者在添加第一个孩子时。

    public class Main {
    
        public static void main(String[] args) {
            Node node = new Node(1)
                .addChild(new Node(2)
                        .addChild(new Node(4))
                        .addChild(new Node(5)))
                .addChild(new Node(3));
        }
    }
    
    class Node {
        public int data; //data for storage
        public List<Node> children;//array will keep children
        public Node parent;//parent to start the tree
    
        public Node(int data) {
            children = new ArrayList<>();
            this.data = data;
        }
    
        public Node addChild(Node node) {
            children.add(node);
            node.parent = this;
            return this;
        }
    }
    

    【讨论】:

    • 所以在 addChild 中,一旦您确认外部的子数组列表为空,您就是将该 Node 对象列表转换为 ArrayList?
    • @ArjunSingh,您可以直接在构造函数中初始化 List,因此您将拥有空或非空列表,它永远不会为空。在我的代码中,列表是在添加节点时创建的,所以如果列表不为空 - 肯定会有至少 1 项。但这只是我的写作方式,可以根据您的需要进行更改。
    • 谢谢!这是有道理的。
    • 这是基本思路,可以调整。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2012-07-02
    • 1970-01-01
    • 2013-03-25
    相关资源
    最近更新 更多