package com.interview.tree; /** * http://www.geeksforgeeks.org/construct-binary-tree-from-inorder-traversal/ * Given inorder traversal of binary tree where every node is greater than * its left and right child. * Test cases: * One two or more nodes in the tree */ public class ContructTreeFromInOrderTraversalRootGreaterThanChild { public Node createTree(int inorder[]){ return createTree(inorder,0,inorder.length-1); } private Node createTree(int inorder[],int low,int high) { if(low > high){ return null; } int i; int maxIndex = low; for(i=low ; i <= high; i++){ if(inorder[maxIndex] > inorder[i]){ maxIndex = i; } } Node root = Node.newNode(inorder[maxIndex]); root.left = createTree(inorder,low,maxIndex-1); root.right = createTree(inorder,maxIndex+1,high); return root; } public static void main(String args[]){ int inorder[] = {9,15,25,6,18,-1,3,-3}; ContructTreeFromInOrderTraversalRootGreaterThanChild tf = new ContructTreeFromInOrderTraversalRootGreaterThanChild(); Node root = tf.createTree(inorder); TreeTraversals tt = new TreeTraversals(); tt.inOrder(root); } }