package com.interview.tree; /** * http://www.geeksforgeeks.org/construct-a-special-tree-from-given-preorder-traversal/ * Test cases: * Length of pre and val is not same * val contains values other than N or L */ class PreIndex{ int index; } public class ConstructTreeFromPreOrderTraversalWith0or2Child { public Node createTree(int pre[],char val[]){ PreIndex pi = new PreIndex(); pi.index = 0; return createTree(pre, val,pi); } private Node createTree(int pre[],char val[], PreIndex ind){ if(ind.index >= pre.length){ return null; } Node root = Node.newNode(pre[ind.index]); if(val[ind.index] == 'L'){ ind.index++; }else{ ind.index++; root.left = createTree(pre,val,ind); root.right = createTree(pre,val,ind); } return root; } public static void main(String args[]){ int pre[] = {10,20,30,40,50,60,70,80,90}; char val[] = {'N','N','N','L','L','L','N','L','L'}; ConstructTreeFromPreOrderTraversalWith0or2Child tfp = new ConstructTreeFromPreOrderTraversalWith0or2Child(); Node root = tfp.createTree(pre, val); TreeTraversals tt = new TreeTraversals(); tt.preOrder(root); System.out.println(); tt.inOrder(root); } }