A tree is a hierarchical data structure which is used to store the data. A binary tree is made of nodes where each node has at most 2 references, a "left" reference and a "right" reference and a data element. The hierarchy starts with a top most element called the root node. The references directly under a node are called children and node is referred as parent. Tree/Binary tree is very commonly used data structure. Applications of tree can be found in search algorithms, distance measuring alorithms , genetics algorithms etc. Another version of Binary tree, known as binary search tree provide better traversal that linkedlist.

**Types of binary tree**

- Full Binary Tree
- Complete Binary Tree
- Balanced Binary Tree
- Binary Search Tree

**Traversal of the tree**

There are 3 common ways for tree traversal:

**Inorder Traversal:**- Traverse the left subtree by recursively calling the in-order function
- Display the data part of root element (or current element)
- Traverse the right subtree by recursively calling the in-order function In the above example, traversal will be following manner:

**PostOrder Traversal:**- Traverse the left subtree by recursively calling the post-order function.
- Traverse the right subtree by recursively calling the post-order function.
- Display the data part of root element (or current element).

**PreOrder Traversal:**- Display the data part of root element (or current element)
- Traverse the left subtree by recursively calling the pre-order function.
- Traverse the right subtree by recursively calling the pre-order function.

Traversal for the above example

- Inorder traversal: 9,5,10,2,6,1,11,7,12,4,8
- Postorder traversal: 9,10,5,6,2,11,12,7,8,4,1
- Preorder traversal: 1,2,5,9,10,6,4,7,11,12,8

**Advantages of trees**

Trees are so useful and frequently used, because they have some very serious advantages:

- Trees reflect structural relationships in the data
- Trees are used to represent hierarchies
- Trees provide an efficient insertion and searching
- Trees are very flexible data, allowing to move subtrees around with minumum effort