Проблема: корневому узлу присваивается значение NULL, а фактическое добавление узлов в дереве не происходит:
Клиентская программа:
int main () {
int arr [] = {15, 10, 100, 5, 13, 90, 80, 50, 10, 5, 3};
int len = sizeof(arr)/sizeof(*arr);
using namespace btree;
//create an instance of btree::tree;
btree::tree* tree = new btree::tree();
btree::btnode* root = tree->get_root_btnode();
//create tree
tree->create_btree (root, arr, len);
delete tree;
return 0;
}
Функции-члены (используемые в клиентской программе) выглядят следующим образом:
//creates a complete tree
void tree::create_btree (btnode* root, int arr[], int len) {
for (int i = 0; i < len; i++) {
add_a_btnode (root, arr[i]);
}
std::cout << "Tree creation successful!!" << std::endl;
}
void tree::add_a_btnode (btnode* root, int data) {
///check if tree is empty
btnode *current = root;
if (!current) {
btnode* newbtnode = new btnode(data);
root = newbtnode;
return;
}
if (current->get_left_btnode() != nullptr) {
//can we add it as right child of current btnode?
if (current->get_right_btnode() != nullptr) {
//recurse
add_a_btnode (current->get_left_btnode(), current->get_data());
} else {
btnode* newbtnode = new btnode(data);
current->m_right = newbtnode;
}
} else {
btnode* newbtnode = new btnode(data);
current->m_left = newbtnode;
}
std::cout << "a root btnode is added with data: " << data << endl;
}
и, наконец, функции-члены, которые я ожидал вернуть мне корневой узел (что не совсем так :( любая помощь):
btnode* tree::get_root_btnode () { return m_root_btnode; }