Binary Tree / Add / Search / Release

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #include <stdlib.h> #define MAX 26 typedef struct _Node { char name; struct Node * left; struct Node * right; } Node; Node * root; char nodeList[MAX][3]; Node* createNode (char name) { Node * newNode = (Node*)malloc(sizeof(Node)); newNode->name = name; newNode->left = NULL; newNode->right = NULL; return newNode; } void initTreeMemory (Node * node) { if (node == NULL) { return; } initTreeMemory(node->left); initTreeMemory(node->right); free(node); } Node* searchParentNode (Node * parent, char targetNode) { Node * targetParent = NULL; if (parent == NULL) { return NULL; } if (parent->name == targetNode) { return parent; } targetParent = searchParentNode(parent->left, targetNode); if (targetParent == NULL) { targetParent = searchParentNode(parent->right, targetNode); } return targetParent; } void showPreNode (Node * parent) { if (parent == NULL) { return; } printf("%c", parent->name); showPreNode(parent->left); showPreNode(parent->right); } void showInNode (Node * parent) { if (parent == NULL) { return; } showInNode(parent->left); printf("%c", parent->name); showInNode(parent->right); } void showPostNode (Node * parent) { if (parent == NULL) { return; } showPostNode(parent->left); showPostNode(parent->right); printf("%c", parent->name); } void startMakeTree (int N) { root = createNode(nodeList[0][0]); for (int y = 0; y < N; y++) { Node * parentNode = NULL; for (int x = 0; x < 3; x++) { char targetNode = nodeList[y][x]; if (targetNode == '.') { continue; } if (x == 0) { parentNode = searchParentNode(root, targetNode); } else if (x == 1) { if (parentNode != NULL) { parentNode->left = createNode(targetNode); } } else { if (parentNode != NULL) { parentNode->right = createNode(targetNode); } } } } } int main(void) { int N = 0; scanf("%d", &N); for (int i = 0; i < N; i++) { for (int j = 0; j < 3; j++) { scanf("%s", &nodeList[i][j]); } } startMakeTree(N); showPreNode(root); printf("\n"); showInNode(root); printf("\n"); showPostNode(root); initTreeMemory(root); return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines