Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- // declareate type
- struct myTree {
- int val;
- int ser;
- struct myTree *left, *right;
- };
- typedef struct myTree node;
- // inserting
- void insert(node **tree, int val, int ser)
- {
- // empty
- if (!(*tree))
- {
- node *item = NULL;
- item = (node *) malloc(sizeof(node));
- item->val = val;
- item->ser = ser;
- item->left = item->right = NULL;
- *tree = item;
- return;
- }
- if (val < (*tree)->val)
- insert( &((*tree)->left), val, ser );
- else
- insert( &((*tree)->right), val, ser );
- }
- node * search(node **tree, int val)
- {
- // empty
- if (!(*tree))
- return NULL;
- // hit
- if (val == (*tree)->val)
- return (*tree);
- // search
- if (val < (*tree)->val)
- search( &((*tree)->left), val );
- else
- search( &((*tree)->right), val );
- }
- void printPreorder(node *tree)
- {
- if (tree)
- {
- printf("%2d.: %3d\n", tree->ser, tree->val);
- printPreorder(tree->left);
- printPreorder(tree->right);
- }
- }
- void printInorder(node *tree)
- {
- if (tree)
- {
- printInorder(tree->left);
- printf("%2d.: %3d\n", tree->ser, tree->val);
- printInorder(tree->right);
- }
- }
- void printPostorder(node *tree)
- {
- if (tree)
- {
- printPostorder(tree->left);
- printPostorder(tree->right);
- printf("%2d.: %3d\n", tree->ser, tree->val);
- }
- }
- void deltree(node *tree)
- {
- if (tree)
- {
- deltree(tree->left);
- deltree(tree->right);
- tree->left = tree->right = NULL;
- free(tree);
- }
- }
- int main(int argc, char * argv[])
- {
- node *root, *temp;
- int i, ser;
- root = NULL;
- ser = 0;
- // insert
- insert(&root, 9, ++ser);
- int e[] = {12, 1, 47, 3, 0, 4, 7, 32, 8, 15};
- int max_feltoltes = 9;
- int len = (int)(sizeof(e) / sizeof(int));
- for (i = 0; i < len && i < max_feltoltes -1; i++)
- insert(&root, e[i], ++ser);
- i = 4;
- printf("\nSearching for number %d\n", i);
- temp = search(&root, i);
- if (temp)
- printf("find: %2d.: %3d\n", temp->ser, temp->val);
- else
- printf("the number [%3d] is not in the tree.\n", i);
- // print
- printf("\nPrinting in Preorder\n");
- printPreorder(root);
- printf("\nPrinting in Inorder\n");
- printInorder(root);
- printf("\nPrinting in Postorder\n");
- printPostorder(root);
- // delete
- printf("\nDeleting root\n");
- deltree(root);
- root = NULL;
- // print
- printf("\nPrinting in Inorder\n");
- printInorder(root);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment