Я пытаюсь построить базовое c Бинарное дерево поиска в C ++ и сталкиваюсь с некоторыми проблемами, особенно когда я пытаюсь вставить узел через функцию и читать, это вызывает ошибку сегментации. Но та же самая структура узла прекрасно работает, когда я вставляю ее вручную. Код для вставки BST выглядит следующим образом и, скорее всего, является виновником:
void BST::insert(Node* temproot,int val){
// std::cout << root->value <<std::endl;
if(!temproot){
Node* newNode = new Node;
newNode->value = val;
temproot = newNode;
std::cout << "Added Node with Value: " << val << std::endl;
return;
}
if(val<(temproot->value)){
std::cout << "LEFT" << std::endl;
insert(temproot->left, val);
}else{
std::cout << "RIGHT" << std::endl;
insert(temproot->right, val);
}
}
Структура узла выглядит следующим образом:
struct Node{
int value;
Node* left = nullptr, *right = nullptr;
};
А класс BST выглядит примерно так:
class BST{
public:
Node* root= new Node;
BST(int val){
root->value = val;
}
void insert(Node*,int val);
void insertStart(int vasl){
Node* temproot = root;
insert(temproot, vasl);
}
void print(Node*);
void _print(){
print(root);
}
};
Когда я пытаюсь напечатать его следующим образом, это вызывает ошибку сегментации:
void BST::print(Node* temp){
std::cout << temp->value << std::endl;
temp = temp->left;
std::cout << (temp->value) << std::endl;
}
Я немного новичок в C ++, и у меня возникла проблема с наведением указателя на пару дней. Может ли кто-нибудь помочь мне понять, что я делаю здесь неправильно?