I found the implementation for creating a binary tree with in-order and pre-order traversals (http://www.geeksforgeeks.org/construct-tree-from-given-inorder-and-preorder-traversal/), and I understood everything except the following:
// What does inStrt being greater than inEnd mean?
if (inStrt > inEnd)
return null;
// Why does inStrt == inEnd mean having no children?
if (inStrt == inEnd)
return tNode;
// Why is it that the first call has inIndex - 1 for inEnd, while for the second, inIndex + 1 for inStart?
tNode.left = buildTree(in, pre, inStrt, inIndex - 1);
tNode.right = buildTree(in, pre, inIndex + 1, inEnd);
Thank you and will be sure to accept the answer