Inorder Traversal of Binary Search Tree
Inorder traversal is one of the depth first tree traversal methods.
Inorder traversal of binary search tree will produce the output in acending order.
Inorder : Left - Root - Right
Algorithm
Traverse the left subtree.
Visit or print the root.
Traverse the right subtree.
Inorder traversal function
void inorder(struct node *root) { if(root == NULL) return; //traverse the left subtree inorder(root->left); //visit the root printf("%d ",root->key); //traverse the right subtree inorder(root->right); }
Inorder Traversal Source Code
Example
/* * Program : Inorder traversal of binary search tree * Language : C */ #include<stdio.h> #include<stdlib.h> struct node { int key; struct node *left; struct node *right; }; //return a new node with the given value struct node *getNode(int val) { struct node *newNode; newNode = malloc(sizeof(struct node)); newNode->key = val; newNode->left = NULL; newNode->right = NULL; return newNode; } //inserts nodes in the binary search tree struct node *insertNode(struct node *root, int val) { if(root == NULL) return getNode(val); if(root->key < val) root->right = insertNode(root->right,val); if(root->key > val) root->left = insertNode(root->left,val); return root; } //inorder traversal of the binary search tree void inorder(struct node *root) { if(root == NULL) return; //traverse the left subtree inorder(root->left); //visit the root printf("%d ",root->key); //traverse the right subtree inorder(root->right); } int main() { struct node *root = NULL; root = insertNode(root,100); root = insertNode(root, 50); root = insertNode(root, 200); root = insertNode(root, 10); root = insertNode(root, 60); root = insertNode(root, 150); root = insertNode(root, 300); inorder(root); return 0; }