我想实现一个游戏树,每个级别可以有任意数量的节点,基本上我正在为棋子工作AI,我想实现一个用于minimax算法的游戏树。这是我的代码,我正在处理第一个插入的情况,即树是空的....但是当我尝试在root访问数据时,我的程序崩溃了!任何帮助? :/
$(".ui-popup").popup( "close" );
答案 0 :(得分:0)
问题在于您通过值传递r的私有添加功能。因此,当你设置r = newnode时,你实际上是设置一个本地指针变量的地址,它不会影响root。这是解决方法:
class Tree {
public:
Node *root;
Tree() {
root = NULL;
}
private:
void add(Node **r, int data, int size) {
if (*r == NULL) {
Node *newnode = new Node;
newnode->child = new Node*[size];
for (int i = 0; i < size; ++i) {
newnode->child[i] = new Node;
newnode->child[i]->child = 0;
}
newnode->data = data;
*r = newnode;
}
}
public:
void add(int data, int size) {
add(&root, data, size);
}
};
答案 1 :(得分:0)
你做错了是:
r = newnode;
r是你必须做的局部变量
root = newnode;
您的代码将有效。
希望这个帮助