Иногда, когда в процессе dev есть обе рабочие станции WIN и системы LINUX (хостинг), а в коде вы не видите никакого вывода перед соответствующей строкой, это может быть форматирование файла и отсутствие Unix LF (linefeed) заканчивается.
Что мы обычно делаем, чтобы быстро исправить это, переименуйте файл, а в системе LINUX создайте новый файл вместо переименованного, а затем скопируйте его в него. Во многих случаях это решает проблему, так как некоторые из файлов, которые были созданы в WIN, когда-то перемещенные на хостинг, вызывают эту проблему.
Это исправление - это легкое исправление для сайтов, которыми мы управляем по FTP, и иногда может спасти наш новый членов команды некоторое время.
blockquote>int main() { // insert code here... treeNode **node; createTree(node); preOrder(*node); return 0; }
должно быть
int main() { treeNode *node; createTree(&node); preOrder(node); return 0; }
, иначе в createTree
*node = ...
запись в недопустимом местоположении (* узел не установлен в действительный указатель в main )Ваш ввод должен быть
ABD***CEFG*****
для завершения:pi@raspberrypi:/tmp $ gcc -pedantic -Wextra b.c pi@raspberrypi:/tmp $ ./a.out ABD***CEFG****** ABDCEFGpi@raspberrypi:/tmp $
О вашем замечании:
[ 1117] да, я не знаю, какая левая, какая праваяblockquote>
практический способ - нарисовать дерево.
Очень простой способ:
void draw(treeNode *node, int level, char empty) { if (node != NULL) { draw(node->right, level+1, '/'); for (int i = 0; i != level; ++i) putchar(' '); printf("%c\n", node->val); draw(node->left, level+1, '\\'); } else { for (int i = 0; i != level; ++i) putchar(' '); printf("%c\n", empty); } }
, если я изменю main на:
int main() { treeNode *node; createTree(&node); preOrder(node); putchar('\n'); draw(node, 1, ' '); return 0; }
Компиляция и выполнение:
pi@raspberrypi:/tmp $ gcc -pedantic -Wextra b.c pi@raspberrypi:/tmp $ ./a.out ABD***CEFG***** ABDCEFG / C / E / F / G \ A / B / D \
Символ '/' указывает, что справа ничего нет, а символ \ \ указывает, что слева ничего нет
[править] Некоторые способы нарисовать самое красивое дерево можно найти в C Как «нарисовать» ”Двоичное дерево для консоли
Я допустил ошибку на входе, если я использую ваше существо
ABD***CE**FG***
, результат будет:/tmp % ./a.out ABD***CE**FG*** ABDCEFG / F / G \ C / E \ A / B / D \