英文:
How to add multiple child nodes to a tree
问题
class Node:
def __init__(self, data):
self.data = data
self.children = []
self.parent = None
class Tree:
def __init__(self, root_data):
self.root = Node(root_data)
def add_child(self, parent_node, child_data):
child_node = Node(child_data)
child_node.parent = parent_node
parent_node.children.append(child_node)
# Example usage
root_data = 1
tree = Tree(root_data)
parent_node = tree.root
child_data_1 = 2
tree.add_child(parent_node, child_data_1)
child_data_2 = 3
tree.add_child(parent_node, child_data_2)
请注意,上述是你提供的代码的 Python 翻译版本。如果你有任何进一步的问题,或者需要关于代码的解释,请随时提问。
英文:
I'm working on a project to create a tree with more than 2 child nodes. I get that when creating a binary tree, we can just create a left node and a right node to act as children, but when I've looked online for help in creating a tree, every solution I've found talks about creating a binary tree. I understand that part of creating a tree means you need to create an array or arraylist of children nodes, but I don't understand how I'm going to put data into that array or how I'm going to 'connect' the array of children nodes to my parent node?
Here's the code I have at the moment. I know it's not a lot, but I'm struggling just starting this project.
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
{
}
How and where do I start this process of connecting my children nodes to my parent/root node?
答案1
得分: 2
在列表中存储子节点以避免与数组重建的问题,但您也可以使用数组。您还可以在构造函数中直接初始化数组,或在添加第一个子节点时初始化数组。
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; // 用于存储数据
public List<Node> children; // 数组将保持子节点
public Node parent; // 树的起始父节点
public Node(int data) {
children = new ArrayList<>();
this.data = data;
}
public Node addChild(Node node) {
children.add(node);
node.parent = this;
return this;
}
}
英文:
Storing children in list not to have problems with array recreation, but you can use array too.
You may also init array directly in the constructor, or when adding first child.
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;
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论