Я хочу реализовать игровое дерево, которое может иметь любое количество узлов на каждом уровне, в основном я работаю над AI для шашек, и я хочу реализовать игровое дерево, которое будет использоваться в минимаксном алгоритме .Это мой код, и я работал над первым случаем вставки, т. Е. Когда Tree пуст .... но когда я пытаюсь получить доступ к данным у root, моя программа сработает! любая помощь?? :/Реализация игрового дерева для шашек
#include <iostream>
using namespace std;
struct Node {
Node **child;
int data;
};
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);
}
};
int main() {
Tree t;
t.add(5, 20);
cout << t.root->data << endl;
return 0;
}
Ваш отладчик может помочь. –
Я не уклоняюсь от структуры ваших методов добавления. Зачем пропускать «root» внутри них, когда он является членом var? –
Рекомендовать переосмыслить, как вы это делаете, потому что вы кодируете свой путь в город ошибок. Например, сколько детей находится в заданном «узле»? Эта часть информации была отброшена. Вы можете добавить только к 'root'. «Узел» не имеет надлежащего права собственности на ребенка и рассчитывает на «Дерево» для тяжелого подъема. Это означает, что «Дерево» должно знать все о себе и обо всех «узлах», усложняя «Дерево» и при усложнении «Узла». – user4581301