Я построил двоичное дерево с помощью корневого указателя.Создание указателя global C++
Разве коренной указатель не должен быть изменен во всех функциях, так как я объявил его глобальным? Как мне это достичь?
Благодаря
// псевдокод (левый, правый указатели объявлены в другом месте)
Node * root = new Node;
Node * BST::BuildTree(int label)
{
root->left = changed;
root->right = changed;
}
Node * BST::GetNode(int label)
{
BTNode *ptr = root;
cout << root->right; //This gives me a seg fault since root is still NULL and not changed
}
Я не вижу, где вы назначаете «root» в любом месте. Фактически, насколько я могу судить, «BuildTree» тоже должен ломаться, потому что именно по этой причине - «root» никогда не указывает на «узел». – cHao
Я думаю, что я исправил его –
Вам почти _never_ нужно использовать глобальные переменные, особенно в C++, где у вас есть ссылочные переменные для функций, чтобы вы могли изменять корень по своему усмотрению. – paxdiablo