struct node {
person * data;
node * left, * right;
node(person * p) {
data = p; left = NULL; right = NULL;
}
};
class tree {
protected:
node * root;
public:
tree() {
root = NULL;
}
tree(person * p) {
root = new node(p);
}
void insert(person * p) {
if(root == NULL) {
root = new node(p);
return;
}
node * curr = root;
while(true) {
if(p->last < curr->data->last) {
if(curr->left == NULL) {
curr->left = new node(p);
return;
}
curr = curr->left;
} else {
if(curr->right == NULL) {
curr->right = new node(p);
return;
}
curr = curr->right;
}
}
}
void insert(node * & n, person * p) {
if(n == NULL) {
n = new node(p);
return;
}
if(p->last < n->data->last)
insert(n->left, p);
else
insert(n->right, p);
}
void insert(person * p) {
insert(root, p);
}
void print(node * n) {
if(n == NULL)
return;
print(n->left);
cout << n->data->ss << " " << n->data->bday << " "<< n->data->first << ", " << n->data->last << " " << n->data->zip << "\n";
print(n->right);
}
void print() {
print(root);
}
};
Я просмотрел другие реализации BST-вставок, и мой logi c следует другим потокам, которые я видел. Root установлен в NULL в конструкторе. Когда я использую свою функцию печати, она выводит случайные значения, а не информацию, которая хранится с типом человека. В моем коде есть два метода вставки, которые я пробовал. Я также включил свои функции печати на случай, если что-то не так. Распечатка, которую я получаю из своей функции печати, почти кажется отображающей адрес памяти содержимого, но некоторая информация отсутствует. Я не знаю, куда go отсюда.