**Problem Statement:**
Given the required input arguments, write an efficient algorithm to solve the **Construct Binary Tree from Preorder and Inorder** problem. Implement the required logic as specified by standard definitions for this classic algorithmic challenge.
**Hint / Expected Approach:**
Hash inorder positions + recursive split
**Edge Cases to Consider:**
- (1) Single node
- (2) Skewed left tree
- (3) All values same (invalid)
Examples
Example 1
Input:[3,9,20,15,7], [9,3,15,20,7]
Output:[3,9,20,null,null,15,7]
Explanation: Classic
Example 2
Input:[-1], [-1]
Output:[-1]
Explanation: Single node
Example 3
Input:[1,2,3], [2,1,3]
Output:[1,2,3]
Explanation: Simple 3-node
Constraints
▪The number of nodes in the tree is in the range [0, 2000]
▪-1000 <= Node.val <= 1000
▪Ensure depth-first or breadth-first traversals are memory-efficient