Первое, что ваша функция addNode с подписью void bTree :: addNode (int key, node * nod) делает это:
if (key < nod->left->data) {
Проблема с вашим кодом в том, что nod-> left приведет к сбою, так как левый узел не был инициализирован и ведет к несанкционированному доступу к памяти, или к так называемой ошибке сегментации . Давайте пройдемся по основному циклу.
- addNode (10) - функция addNode с сигнатурой void bTree :: addNode (int key) вызывается, root равен нулю, поэтому root создается с левым и правым узлами, установленными в NULL.
- addNode (6) - функция addNode с сигнатурой void bTree :: addNode (int key) вызывается, корень НЕ является нулевым, поэтому addNode с сигнатурой void bTree :: addNode (int ключ, узел * кивок) вызывается. Затем кивни-> налево и вылетай.
Это распространенная проблема в низкоуровневом программировании, и я советую вам поместить отладочные отпечатки в функции, чтобы увидеть, какие параметры введены и где именно произошел сбой кода. Если вы можете точно определить точную линию, которая приводит к сбою (в данном случае это строка с nod-> left), вы сможете решить такие проблемы в будущем легче.
Чтобы устранить проблему, просто инициализируйте левый и правый узлы, прежде чем получить к ним доступ.