Skip to content

Instantly share code, notes, and snippets.

@bparanj
Created August 15, 2020 18:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bparanj/39ade8dee3b48a0a7a330d08bc46dc1f to your computer and use it in GitHub Desktop.
Save bparanj/39ade8dee3b48a0a7a330d08bc46dc1f to your computer and use it in GitHub Desktop.
Node* Tree::generateFromTraversal(int *inorder, int *preorder, int inStart, int inEnd) {
// Reference: https://algorithms.tutorialhorizon.com/make-a-binary-tree-from-given-inorder-and-preorder-traveral/
static int preIndex = 0;
if (inStart > inEnd){
return nullptr;
}
Node* node = new Node(preorder[preIndex++]);
if (inStart == inEnd){
return node;
}
int splitIndex = searchInorder(inorder, inStart, inEnd, node->data);
node->lchild = generateFromTraversal(inorder, preorder, inStart, splitIndex-1);
node->rchild = generateFromTraversal(inorder, preorder, splitIndex+1, inEnd);
return node;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment