Construction of Binary tree given its inorder and preorder traversal.
public static Node construct(String preorder, String inorder, int start, int end, int [] preorderIndex) { if(start > end) return null; Node root = new Node(preorder.charAt(preorderIndex[0])); ++preorderIndex[0]; int inorderIndex = inorder.indexOf(""+root.data); root.left = construct(preorder, inorder, start, inorderIndex - 1, preorderIndex); root.right = construct(preorder, inorder, inorderIndex + 1, end, preorderIndex); return root; } public static void main(String[] args) { String preorder = "ABCDEFG"; String inorder = "GFEDCBA"; // We use this as a reference object, so that we pick the correct value from preorder array during // recursion. This could be done by having a static variable as well. int [] preorderIndex = new int[1]; Node root = CodeSamples.construct(preorder, inorder, 0, preorder.length() - 1, preorderIndex); // Verify if it build correctly BinaryTree.preorderTraversal(root); System.out.println(); BinaryTree.inorderTraversal(root); }
For explanation of the approach and other ways of doing it, visit this link: http://www.geeksforgeeks.org/archives/6633
No comments:
Post a Comment