package com.interview.tree; /** * http://www.geeksforgeeks.org/construct-tree-from-given-inorder-and-preorder-traversal/ * Test cases: * Empty tree * One node tree * All left side tree * All right side tree * Mixed tree * Full tree * complete tree */ public class ConstructTreeFromInOrderPreOrder { private int index = 0; public Node createTree(int inorder[],int preorder[]){ Node result = createTree(inorder,preorder,0,inorder.length-1); index = 0; return result; } private Node createTree(int inorder[],int preorder[], int start, int end){ if(start > end){ return null; } int i; for(i=start; i <= end; i++){ if(preorder[index] == inorder[i]){ break; } } Node node = Node.newNode(preorder[index]); index++; node.left = createTree(inorder,preorder,start,i-1); node.right = createTree(inorder,preorder,i+1,end); return node; } }