Затмение C ++: двоичное дерево поиска узел-> data = переменная, похоже, не работает - PullRequest
0 голосов
/ 24 июня 2018

Сборка прошла успешно, но время выполнения останавливается на

узел-> данные = ставка;

в следующей функции.Таким образом, вывод успешно распечатывается до оператора cout «Загрузка файла CSV 888».Я не уверен, что мешает ему запустить этот код.

void BinarySearchTree::Insert(Bid bid) {
    // FIXME (2a) Implement inserting a bid into the tree
cout << "Loading CSV file 333" << endl;
Node* node = root;
cout << "Loading CSV file 888" << endl;
node->data = bid;
cout << "Loading CSV file 777" << endl;
if (root == NULL){
    //root->data = bid;
//root->left = 0;
//root->right = 0;
root = node;
node->left = NULL;
node->right = NULL;
cout << "Loading CSV file 444" << endl;
}
else
{
cout << "Loading CSV file 666" << endl;
Node* cur;
    cur = root;
    while (cur != NULL){
      if (strToDouble2(node->data.bidId) < strToDouble2(cur->data.bidId)){
         if (cur->left == NULL){
           cur->left = node;
           cur = NULL;
         }
         else{
           cur = cur->left;
         }
      }
      else
         if (cur->right == 0){
           cur->right = node;
           cur = NULL;
         }
         else{
           cur = cur->right;
         }
    node->left = NULL;
    node->right = NULL;
    cout << "Loading CSV file 5555" << endl;
    }
}
}

1 Ответ

0 голосов
/ 24 июня 2018

Поскольку дерево пустое, поэтому root является нулевым указателем, как и node, начиная с node = root;.

Начинать с сохранения значения для вставки в корневой узел довольно странно.
Если вы добавляете узел, код должен где-то сказать new Node, а вставленное значение должно быть в этом узле.

Выяснить, где его создать, в качестве упражнения.

...