class TNode { int data; TNode left; TNode right; TNode(int d) { data = d; left= null; right=null; } } class TreeBuilder { static int postIndex; static int[] in, post; TNode Start; static void setValue(int[] i, int[] p) { in = i; post = p; postIndex=in.length-1; //Change 1 } static int findInIndex(int inStart, int inEnd, int value) { for(int i=inStart; i<=inEnd; i++) if(in[i]==value) return i; return -1; } //Main method with the logic for building tree using Pre and Inorder traversals static TNode buildTree(int inStart, int inEnd) { if(inStart>inEnd) return null; TNode node = new TNode(post[postIndex--]); //Change 2 if(inStart==inEnd) return node; int inIndex = findInIndex(inStart, inEnd, node.data); //Change 3 node.right=buildTree(inIndex+1, inEnd); node.left=buildTree(inStart, inIndex-1); return node; } } class TreeBuilderDemo { public static void main(String[] args) { int[] in = {8, 4, 10, 9, 11, 2, 5, 1, 6, 3, 7}; int[] post = {8, 10, 11, 9, 4, 5, 2, 6, 7, 3, 1}; TreeBuilder.setValue(in, post); TNode start = TreeBuilder.buildTree(0,in.length-1); System.out.print("\nPreorder\t: "); printPreorder(start); System.out.print("\n\nInorder\t\t: "); printInorder(start); System.out.print("\n\nPostorder\t: "); printPostorder(start); System.out.println(""); } static void printInorder(TNode node) { if (node == null) return; printInorder(node.left); System.out.print(node.data + "\t "); printInorder(node.right); } static void printPreorder(TNode node) { if (node == null) return; System.out.print(node.data + "\t "); printPreorder(node.left); printPreorder(node.right); } static void printPostorder(TNode node) { if (node == null) return; printPostorder(node.left); printPostorder(node.right); System.out.print(node.data + "\t "); } }
Click here to learn Building a Binary Tree using Inorder and Preorder Traversals in Java.
No comments:
Post a Comment
Your comments are very much valuable for us. Thanks for giving your precious time.