Create Binary Tree - Preorder, Inorder and Postorder Traversal
Lets see simple java code to create Binary Tree and all 3 traversals like Preorder, Inorder and Postorder. Used 2 classes called BST (used for binary tree node) and BinaryTree to construct Binary Tree and for traversals. |
class BST { BST left; // Left subtree BST right; // Right subtree int data; // Element public BST(int data) { this.data = data; } }
public class BinaryTree { public static void main(String[] args) { int val[] = new int[] { 4, 5, 8, 100, 3, 2, 9, 1, 7, 6 };; BST root = new BST(val[0]); // Initialize root with 1ft element BST tmpRoot = root; // Temporary root node for (int i = 1; i < val.length; i++) { BST lastNode = getLastNode(tmpRoot, val[i]); if (val[i] > lastNode.data) { BST tmp = new BST(val[i]); lastNode.right = tmp; } else { BST tmp = new BST(val[i]); lastNode.left = tmp; } } System.out.print("\n\n PREORDER :::::: "); preOrderTraversal(root); System.out.print("\n\n INORDER ::::::: "); inOrderTraversal(root); System.out.print("\n\n POSTORDR :::::: "); postOrderTraversal(root); } public static BST getLastNode(BST root, int val) { if (val > root.data) { if (root.right == null) { return root; } else return getLastNode(root.right, val); } else { if (root.left == null) { return root; } else return getLastNode(root.left, val); } } // BST Pre-order traversal public static void preOrderTraversal(BST root) { System.out.print(root.data + ", "); if (root.left != null) { preOrderTraversal(root.left); } if (root.right != null) { preOrderTraversal(root.right); } } // BST in-order traversal public static void inOrderTraversal(BST root) { if (root.left != null) { inOrderTraversal(root.left); } System.out.print(root.data + ", "); if (root.right != null) { inOrderTraversal(root.right); } } // BST post-order traversal public static void postOrderTraversal(BST root) { if (root.left != null) { postOrderTraversal(root.left); } if (root.right != null) { postOrderTraversal(root.right); } System.out.print(root.data + ", "); } }
OUTPUT:
PREORDER :::::: 4, 3, 2, 1, 5, 8, 7, 6, 100, 9, INORDER ::::::: 1, 2, 3, 4, 5, 6, 7, 8, 9, 100, POSTORDR :::::: 1, 2, 3, 6, 7, 9, 100, 8, 5, 4,