Skip to content

Instantly share code, notes, and snippets.

@dsouzadyn
Created September 25, 2016 14:03
Show Gist options
  • Save dsouzadyn/1b0fbb01b7a45474e532d621560613d4 to your computer and use it in GitHub Desktop.
Save dsouzadyn/1b0fbb01b7a45474e532d621560613d4 to your computer and use it in GitHub Desktop.
Tree Traversal
#include <stdio.h>
#include <malloc.h>
#define R return
struct node { int data; struct node* left; struct node* right; };
struct node* insert(struct node* tree, int val)
{
if (tree == NULL) {
tree = (struct node*) malloc(sizeof(struct node));
tree->left = NULL;
tree->right = NULL;
tree->data = val;
} else {
if (val < tree->data) {
printf("INSIDE L\n");
tree->left = insert(tree->left, val);
} else {
printf("INSIDE R\n");
tree->right = insert(tree->right, val);
}
}
R tree;
}
struct node* create(struct node* tree)
{
int val;
printf("Enter value to insert: ");
scanf("%d", &val);
while (val != -1) {
tree = insert(tree, val);
printf("Enter value to be inserted: ");
scanf("%d", &val);
}
R tree;
}
void inOrder(struct node* tree)
{
if (tree == NULL) {
R;
} else {
inOrder(tree->left);
printf("%d\n", tree->data);
inOrder(tree->right);
}
}
void preOrder(struct node* tree)
{
if (tree == NULL) {
R;
} else {
printf("%d\n", tree->data);
preOrder(tree->left);
preOrder(tree->right);
}
}
void postOrder(struct node* tree)
{
if (tree == NULL) {
R;
} else {
postOrder(tree->left);
postOrder(tree->right);
printf("%d\n", tree->data);
}
}
int main() {
struct node* tree;
tree = create(tree);
inOrder(tree);
printf("\n");
preOrder(tree);
printf("\n");
postOrder(tree);
R 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment