From 8fdaad703771d8575fc3c89ad05ab9f780f58524 Mon Sep 17 00:00:00 2001 From: Amneesh Singh Date: Tue, 27 Dec 2022 20:01:31 +0530 Subject: [PATCH] exp 8: init Signed-off-by: Amneesh Singh --- 8.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 8.c diff --git a/8.c b/8.c new file mode 100644 index 0000000..1c02bcf --- /dev/null +++ b/8.c @@ -0,0 +1,72 @@ +#include +#include + +typedef struct Node node; +struct Node { + int id; + struct Node *left; + struct Node *right; +}; + +node *new(int id) { + node *n = malloc(sizeof(node)); + n->left = n->right = NULL; + n->id = id; + return n; +} + +void preorder(node *n) { + if (!n) + return; + + printf("%d ", n->id); + preorder(n->left); + preorder(n->right); +} + +void postorder(node *n) { + if (!n) + return; + + postorder(n->left); + postorder(n->right); + printf("%d ", n->id); +} + +void inorder(node *n) { + if (!n) + return; + + inorder(n->left); + printf("%d ", n->id); + inorder(n->right); +} + +void free_tree(node *n) { + if(!n) + return; + + free_tree(n->left); + free_tree(n->right); + free(n); +} + +int main() { + node *root = new(1); + root->left = new(4); + root->right = new(6); + root->left->left = new(2); + root->left->right = new(1783); + root->left->right->left = new(100); + + printf("Preorder: "); + preorder(root); + printf("\n"); + printf("Postorder: "); + postorder(root); + printf("\n"); + printf("Inorder: "); + inorder(root); + + free_tree(root); +}