void TreeDel(tree *w) { if (!w) return; TreeDel(w->left); TreeDel(w->right); free(w); w = NULL; }
void TreeDel (Node_t ** node) { assert (node); assert (*node); if ((*node)->left) TreeDel (&(*node)->left); if ((*node)->right) TreeDel (&(*node)->right); free ((*node)->data); (*node)->data = NULL; free (*node); *node = NULL; }
int main () { SetConsoleOutputCP(1251); SetConsoleCP(1251); const char dumpFilename[] = "dump"; const char saveFilename[] = "save"; // Node_t * nd = newNode ("aha", newNode ("столовка", NULL, newNode ("ops", NULL, NULL)), NULL); Node_t * nd = TreeLoad (saveFilename); QUIZ (nd); // TreePrint (nd, stdout); TreeDump (nd, dumpFilename); FILE * out = fopen (saveFilename, "w"); assert (out); TreePrint (nd, out); fclose (out); TreeDel (&nd); return 0; }
int main(int argc, char * argv[]) { if (argc>1) { if (strcmp(argv[1],"-h")==0) { Help(); return 0; } else { puts("Error. Improper parameter."); return 0; } } tree *root; root = NULL; while (1) { puts("Options:\n1 - Create tree\n2 - Show tree\n3 - Count nodes on N level\n0 - Exit"); int inp = -1; if (!GetInt(&inp)) { puts("Input error. Try again"); continue; } switch(inp) { case 1: root = CreateTree(root); break; case 2: ShowTree(root); break; case 3: CountNodes(root); break; case 0: TreeDel(root); return EXIT_SUCCESS; default: puts("Input error. Try again"); break; } } //TODO }