Binary Tree Traversal Methods in Data Structure
There are three standard ways of traversing a binary tree T with root R.
1. Preorder Traversal
2. Inorder Traversal
3. Postorder Traversal
Preorder Traversal
1. Process the root R.
2. Traverse the left sub-tree of R in preorder.
3. Traverse the right sub-tree of R in preorder.
Algorithm for Recursive Preorder Traversal
Algorithm fnRecursivePreorder(ptrRoot) { if(ptrRoot!=NULL) { print(ptrRoot->info); fnRecursivePreorder(ptrRoot->ptrLeft); fnRecursivePreorder(ptrRoot->ptrRight); } } // End of Algorithm
Inorder Traversal
1. Traverse the left sub-tree of the root R in inorder.
2. Process the root R.
3. Traverse the right sub-tree of the root R in inorder.
Algorithm for Non-Recursive Inorder Traversal
Algorithm fnNonRecursiveInorder(ptrRoot) { TreeNode *P; P=ptrRoot; Initialize stack St; while(!empty(St) || P!=NULL) { while(P!=NULL) { fnPush(St, P); P=P->ptrLeft; } if(!empty(St)) { P=fnPop(St); print P->ptrRight; } } } // End of Algorithm
Postorder Traversal
1. Traverse the left sub-tree of R in postorder.
2. Traverse the right sub-tree of R in postorder.
3. Process the root R.
Algorithm for Recursive Postorder Traversal
Algorithm fnRecursivePostorder(ptrRoot) { if(ptrRoot!=NULL) { fnRecursivePostorder(ptrRoot->ptrLeft); fnRecursivePostorder(ptrRoot->ptrRight); print(ptrRoot->info); } } // End of Algorithm