gpt4 book ai didi

java - 填充 N 叉树 - Java

转载 作者:行者123 更新时间:2023-11-30 11:34:13 30 4
gpt4 key购买 nike

我正在用 Java 实现 N 叉树;每个节点可以有尽可能多的节点。当我尝试 build 一棵树时,问题就来了。我有一个函数可以递归地创建一个特定高度的树,并根据节点列表分配子节点。当我调用该函数时,根节点不包含任何数据;一旦完成,它会返回一个空值。我从未实现过 N 叉树,所以我对实现有一定的把握,如果有任何建议,我们将不胜感激!

//Creates a tree 
void createTree(int height) throws InvalidMoveException,
Modified_Tree.InvalidMoveException {
root = new ListNode();
root = populateTree(moves.root,height,true,0);
}

//Function called by Create tree to populate the tree
//It takes in a ListNode, an int height that determines the height of the tree,
//and a boolean, which is used
//To know whether the node is a black piece/max or a white piece/min

public ListNode populateTree(ListNode root, int height, boolean black, int score)
{

ListNode node = root;
List<ListNode> nodes = new List<ListNode>(10);

//Sets the size of List in node to the int taken
node.setChildNumber(nodes.size());

//return if reached the pre-maximum height
if(height == 1){

for(int i = 0; i < nodes.size(); i++){

//Add the child to the last node
node.addChild(nodes.get(i));

}

return node;
}

else{

for(int j =0; j < node.getChildNumber(); j++){
node = populateTree(node.getChildAt(j),height-1,!black,score);

}
}
return node;
}

非常感谢任何帮助!

最佳答案

你的问题在这里:

List<ListNode> nodes = new List<ListNode>(10);

首先,我假设您的意思是 new ArrayList<ListNode>(10);List<T> 的一些其他具体实现.二、论证10只确保您将拥有 10最初的位置。它并不意味着您将拥有 10 ListNodenodes 中自动初始化的实例.那么你有:

    for(int i = 0; i < nodes.size(); i++){
//Add the child to the last node
node.addChild(nodes.get(i));
}

这个循环永远不会执行,因为nodes.size()为零,因为它根本不包含任何节点。所以你需要用 ListNode 初始化你的列表实例优先。

关于java - 填充 N 叉树 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15771090/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com