为Checkers实现游戏树

时间:2015-12-16 22:48:55

标签: c++ tree

我想实现一个游戏树,每个级别可以有任意数量的节点,基本上我正在为棋子工作AI,我想实现一个用于minimax算法的游戏树。这是我的代码,我正在处理第一个插入的情况,即树是空的....但是当我尝试在root访问数据时,我的程序崩溃了!任何帮助? :/

$(".ui-popup").popup( "close" );

2 个答案:

答案 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;

您的代码将有效。

希望这个帮助