Я пытаюсь реализовать функцию вставки, используемую на geeksforgeeks.com, но сталкиваюсь с некоторыми проблемами, пытаясь включить ее в мой текущий код.
У меня есть вектор с данными, которые мне нужно поместить в двоичное дерево. Я использую эту функцию для передачи чисел в функцию вставки:
void populateTree(vector<string> dataVec) {
for (int i = 0; i < dataVec.size(); i++) {
insert(stoi(dataVec[i]), root);
}
}
Это функция вставки:
node* insert(int x, node* node) {
if (node == nullptr)
return newNode(x);
if (x < node->data)
node->left = insert(x, node->left);
else
node->right = insert(x, node->right);
return root;
}
Новая функция узла:
node* newNode(int num) {
node* temp = new node;
temp->data = num;
temp->left = temp->right = nullptr;
temp->level = 1;
return temp;
}
Root - это закрытый член в классе, который инициализируется значением nullptr. Я не уверен, как я должен go сделать первый узел, который приходит из вектора, как root, а затем продолжать рекурсивно вставлять вещи, начиная с него. Спасибо!