Binary Tree Traversal Techniques (Inorder , Preorder , Postorder ) 🌟🌟🎊🎊👍👍

 By: Himanshu Tiwari

Algorithm Inorder(tree)

1 . Traverse the left subtree, i.e., call Inorder(left->subtree)
2 .Visit the root.
3 . Traverse the right subtree, i.e., call Inorder(right->subtree)

Algorithm Preorder(tree)

1 . Visit the root.
2 . Traverse the left subtree, i.e., call Preorder(left->subtree)
3 . Traverse the right subtree, i.e., call Preorder(right->subtree)

Algorithm Postorder(tree)

1 . Traverse the left subtree, i.e., call Postorder(left->subtree)
2 . Traverse the right subtree, i.e., call Postorder(right->subtree)
3 . Visit the root

#include <stdio.h>
#include <stdlib.h>

struct node {
  int data;
  struct node *left;
  struct node *right;
};

struct node *create_node(int data) {
  struct node *new_node = malloc(sizeof(struct node));
  new_node->data = data;
  new_node->left = NULL;
  new_node->right = NULL;
  return new_node;
}

void insert_node(struct node **root, int data) {
  if (*root == NULL) {
    *root = create_node(data);
    return;
  }

  if (data < (*root)->data) {
    insert_node(&(*root)->left, data);
  } else {
    insert_node(&(*root)->right, data);
  }
}

void print_tree(struct node * r) {
  if (r == NULL) {
    return;
  }

  print_tree(r->left);
  printf("%d ", r->data);
  print_tree(r->right);
}
void preorder(struct node * rr){
  if(rr!=NULL){
    printf("%d ",rr->data);
    preorder(rr->left);
    preorder(rr->right);
  }
}
void inorder(struct node * r){
  if(r!=NULL){
    inorder(r->left);
    printf("%d ",r->data);
    inorder(r->right);
  }
}
void postorder(struct node *r){
  if(r!=NULL){
    postorder(r->left);
    postorder(r->right);
    printf("%d ",r->data);
  }
}
int main() {
struct node *p=create_node(1);
struct node *p1=create_node(2);
struct node *p2=create_node(3);
struct node *p3=create_node(4);
struct node *p4=create_node(5);
struct node *p5=create_node(6);
struct node *p6=create_node(7);

p->left=p1;
p->right=p2;
p1->left=p3;
p1->right=p4;
p2->left=p5;
p2->right=p6;

  printf((" PREORDER  : "));
  preorder(p);
  printf("\n");
  printf(" INORDER   : ");
  inorder(p);
  printf("\n");
  printf(" POSTORDER : ");
  postorder(p);
  return 0;
}

Comments

Popular Posts