93
9.c
Normal file
93
9.c
Normal file
@@ -0,0 +1,93 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
typedef struct Car car;
|
||||
|
||||
typedef struct Node node;
|
||||
struct Node {
|
||||
char type[30];
|
||||
char company[50];
|
||||
uint yom;
|
||||
struct Node *left;
|
||||
struct Node *right;
|
||||
};
|
||||
|
||||
node *new (char *type, char *company, uint yom) {
|
||||
node *n = malloc(sizeof(node));
|
||||
n->left = n->right = NULL;
|
||||
strcpy(n->type, type);
|
||||
strcpy(n->company, company);
|
||||
n->yom = yom;
|
||||
return n;
|
||||
}
|
||||
|
||||
void insert(node **root, char *type, char *company, uint yom) {
|
||||
if (!(*root)) {
|
||||
*root = new (type, company, yom);
|
||||
return;
|
||||
}
|
||||
|
||||
if (yom < (*root)->yom)
|
||||
insert(&((*root)->left), type, company, yom);
|
||||
else
|
||||
insert(&((*root)->right), type, company, yom);
|
||||
}
|
||||
|
||||
void preorder(node *n) {
|
||||
if (!n)
|
||||
return;
|
||||
|
||||
printf("Type: %s\nCompany: %s\nYear: %d\n", n->type, n->company, n->yom);
|
||||
preorder(n->left);
|
||||
preorder(n->right);
|
||||
}
|
||||
|
||||
void postorder(node *n) {
|
||||
if (!n)
|
||||
return;
|
||||
|
||||
postorder(n->left);
|
||||
postorder(n->right);
|
||||
printf("Type: %s\nCompany: %s\nYear: %d\n", n->type, n->company, n->yom);
|
||||
}
|
||||
|
||||
void inorder(node *n) {
|
||||
if (!n)
|
||||
return;
|
||||
|
||||
inorder(n->left);
|
||||
printf("Type: %s\nCompany: %s\nYear: %d\n", n->type, n->company, n->yom);
|
||||
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 = NULL;
|
||||
insert(&root, "A", "Amaang", 4004);
|
||||
insert(&root, "Sahi", "Vivek", 2003);
|
||||
insert(&root, "How", "Alphonso", 9999);
|
||||
|
||||
printf("---------\n");
|
||||
printf("Preorder:\n");
|
||||
printf("---------\n");
|
||||
preorder(root);
|
||||
printf("---------\n");
|
||||
printf("Postorder:\n");
|
||||
printf("---------\n");
|
||||
postorder(root);
|
||||
printf("---------\n");
|
||||
printf("Inorder:\n");
|
||||
printf("---------\n");
|
||||
inorder(root);
|
||||
|
||||
free_tree(root);
|
||||
}
|
Reference in New Issue
Block a user