Sudo Placement[1.4] | BST Traversal
Last Updated :
29 Aug, 2022
Given N elements to be inserted into Binary Search Tree. The task is to construct a binary search tree with only insert operation and finally print the elements in the postorder traversal. The BST is constructed according to the arrival order of elements.
Examples:
Input: N elements = {8, 5, 10, 3, 4, 9, 7}
Output: 4 3 7 5 9 10 8
For the above input, the BST is:
8
/ \
5 10
/ \ /
3 7 9
\
4
The post-order traversal of the above BST is 4 3 7 5 9 10 8
Approach: The approach to solve this problem is to construct the BST using insertion method in BST. Once all the nodes are inserted, print the postorder traversal of the tree.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
struct Node {
int data;
Node* left = NULL;
Node* right = NULL;
};
Node* newNode( int key)
{
Node* temp = new Node;
temp->data = key;
temp->left = NULL;
temp->right = NULL;
return temp;
}
Node* insertNode(Node* head, int key)
{
if (head == NULL)
head = newNode(key);
else {
if (key < head->data)
head->left = insertNode(head->left, key);
else
head->right = insertNode(head->right, key);
}
return head;
}
void posOrder(Node* head)
{
if (head == NULL)
return ;
posOrder(head->left);
posOrder(head->right);
cout << head->data << " " ;
}
int main()
{
Node* root = NULL;
root = insertNode(root, 8);
root = insertNode(root, 5);
root = insertNode(root, 10);
root = insertNode(root, 3);
root = insertNode(root, 4);
root = insertNode(root, 9);
root = insertNode(root, 7);
posOrder(root);
cout << endl;
}
|
Java
class GFG {
static class Node {
int data;
Node left = null ;
Node right = null ;
};
static Node newNode( int key)
{
Node temp = new Node();
temp.data = key;
temp.left = null ;
temp.right = null ;
return temp;
}
static Node insertNode(Node head, int key)
{
if (head == null )
head = newNode(key);
else {
if (key < head.data)
head.left = insertNode(head.left, key);
else
head.right = insertNode(head.right, key);
}
return head;
}
static void posOrder(Node head)
{
if (head == null )
return ;
posOrder(head.left);
posOrder(head.right);
System.out.print(head.data + " " );
}
public static void main(String[] args)
{
Node root = new Node();
root = insertNode(root, 8 );
root = insertNode(root, 5 );
root = insertNode(root, 10 );
root = insertNode(root, 3 );
root = insertNode(root, 4 );
root = insertNode(root, 9 );
root = insertNode(root, 7 );
posOrder(root);
System.out.println( "" );
}
}
|
Python3
import math
class Node:
def __init__( self ,data):
self .data = data
self .left = None
self .right = None
def newNode(key):
temp = Node(key)
temp.data = key
temp.left = None
temp.right = None
return temp
def insertNode(head, key):
if (head = = None ):
head = newNode(key)
else :
if (key < head.data):
head.left = insertNode(head.left, key)
else :
head.right = insertNode(head.right, key)
return head
def posOrder(head):
if (head = = None ):
return
posOrder(head.left)
posOrder(head.right)
print (head.data,end = " " )
if __name__ = = '__main__' :
root = None
root = insertNode(root, 8 )
root = insertNode(root, 5 )
root = insertNode(root, 10 )
root = insertNode(root, 3 )
root = insertNode(root, 4 )
root = insertNode(root, 9 )
root = insertNode(root, 7 )
posOrder(root)
|
C#
using System;
class GFG {
public class Node {
public int data;
public Node left = null ;
public Node right = null ;
};
static Node newNode( int key)
{
Node temp = new Node();
temp.data = key;
temp.left = null ;
temp.right = null ;
return temp;
}
static Node insertNode(Node head, int key)
{
if (head == null )
head = newNode(key);
else {
if (key < head.data)
head.left = insertNode(head.left, key);
else
head.right = insertNode(head.right, key);
}
return head;
}
static void posOrder(Node head)
{
if (head == null )
return ;
posOrder(head.left);
posOrder(head.right);
Console.Write(head.data + " " );
}
public static void Main(String[] args)
{
Node root = new Node();
root = insertNode(root, 8);
root = insertNode(root, 5);
root = insertNode(root, 10);
root = insertNode(root, 3);
root = insertNode(root, 4);
root = insertNode(root, 9);
root = insertNode(root, 7);
posOrder(root);
Console.WriteLine( "" );
}
}
|
Javascript
<script>
class Node
{
constructor()
{
this .data = 0;
this .left = null ;
this .right = null ;
}
};
function newNode(key)
{
var temp = new Node();
temp.data = key;
temp.left = null ;
temp.right = null ;
return temp;
}
function insertNode(head, key)
{
if (head == null )
head = newNode(key);
else
{
if (key < head.data)
head.left = insertNode(head.left, key);
else
head.right = insertNode(head.right, key);
}
return head;
}
function posOrder(head)
{
if (head == null )
return ;
posOrder(head.left);
posOrder(head.right);
document.write(head.data + " " );
}
var root = null ;
root = insertNode(root, 8);
root = insertNode(root, 5);
root = insertNode(root, 10);
root = insertNode(root, 3);
root = insertNode(root, 4);
root = insertNode(root, 9);
root = insertNode(root, 7);
posOrder(root);
document.write( "<br>" );
</script>
|
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...