Skip to content

Instantly share code, notes, and snippets.

@dapurv5
Created January 2, 2013 19:45
Show Gist options
  • Save dapurv5/4437310 to your computer and use it in GitHub Desktop.
Save dapurv5/4437310 to your computer and use it in GitHub Desktop.
Tree Builder Preorder and Inorder
class TreeBuilder{
public Node buildTree(String[] preOrder, String[] inOrder){
assert(preOrder.length == inOrder.length);
if(preOrder.length == 0){
return null;
}
String rootData = preOrder[0];
Node root = new Node();
root.data = rootData;
int rootIndex = Array.<String>search(inOrder, rootData);
String[] inLeft = (String[]) Array.<String>splice(inOrder,0,rootIndex-1);
String[] inRight = (String[]) Array.<String>splice(inOrder, rootIndex+1, inOrder.length-1);
String[] preLeft = (String[]) Array.<String>splice(preOrder,1, inLeft.length);
String[] preRight = (String[]) Array.<String>splice(preOrder,inLeft.length+1,preOrder.length-1);
root.left = buildTree(preLeft, inLeft);
root.right = buildTree(preRight, inRight);
return root;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment