**Binary Search Tree**

A Binary Search Tree is a binary tree with a search property where elements in the left sub-tree are less than the root and elements in the right sub-tree are greater than the root.

**Ex**

**Walking (Traversing) a Binary Search Tree**

There can be 3 types of tree traversals in a binary tree as below.

- Pre-Order
- In-Order
- Post-Order

**Pre-Order traversal**

In this traversal the traversal happens in the following order.

- Root node
- Left Child
- Right Child

For the binary search tree, displayed above the Pre-Order traversal would be as follows.

The C# implementation for the same is as follows.

public void PreOrder_Rec (TNode root)

{

if (root != null)

{

Console.Write(root.Data +" ");

PreOrder_Rec(root.Left);

PreOrder_Rec(root.Right);

}

}** In-Order traversal**

In this traversal the traversal happens in following order:

- Left Child
- Root node
- Right Child

For the binary search tree, displayed above the In-Order traversal would be as follows.

The C# implementation for that is as follows.

public void InOrder_Rec(TNode root)

{

if (root != null)

{

InOrder_Rec(root.Left);

Console.Write(root.Data +" ");

InOrder_Rec(root.Right);

}

}

**Post-Order traversal**

In this traversal the traversal happens in the following order:

- Left Child
- Right Child
- Root node

For the binary search tree, displayed above the Post-Order traversal would be as follows.

The C# implementation for that is as follows:

public void PostOrder_Rec(TNode root)

{

if (root != null)

{

PostOrder_Rec(root.Left);

PostOrder_Rec(root.Right);

Console.Write(root.Data +" ");

}

}

** Important Notes**

- One of the practical uses of pre-order traversal can be a table of contents in a book where we first visit the root or main chapter then its sub-chapters.
- One of the practical uses of post-order traversal can be calculating the size of directories in a computer where the first size of its sub-folders are calculated and then it gets assigned to the root folder.
- Pre-Order and Post-Order traversal can be used in any general tree however In-Order is specific to binary trees.
- We can form a binary tree if Pre-Order and In-Order traversal or Post-Order and In-Order traversals are given.
- We can also form a binary tree if Pre-Order and Post-Order traversals are given provided each internal node of the binary tree has two children.