Given Preorder and inorder traversal of a tree, construct the binary tree.
Note:
Assume that duplicates does not exist in the tree.
1 /**2 * Definition for binary tree3 * struct TreeNode {4 * int val;5 * TreeNode *left;6 * TreeNode *right;7 * TreeNode (int x): Val (x), left (null), right (null) {}8 * };9 */Ten classSolution { One Public: ATemplate<typename iter> -TreeNode *Buildtree (Iter Prebegin, Iter Preend, Iter Inbegin, iter inend) { - if(Prebegin > Preend)returnnullptr; the if(Inbegin > Inend)returnnullptr; - - intRoot_val = *Prebegin; -TreeNode *root =NewTreeNode (root_val); +Iter In_root_pos =Find (Inbegin, inend, root_val); - intLeft_size = In_root_pos-Inbegin; +Root->left = Buildtree (Prebegin +1, Prebegin + left_size, Inbegin, In_root_pos-1); ARoot->right = Buildtree (prebegin + left_size +1, Preend, In_root_pos +1, inend); at - returnRoot; - } - -TreeNode *buildtree (vector<int> &preorder, vector<int> &inorder) { - if(Preorder.empty () | |inorder.empty ()) in returnNULL; - to returnBuildtree (Preorder.begin (), Preorder.end ()-1, Inorder.begin (), Inorder.end ()-1); + } -};
[Leetcode] Construct Binary Tree from preorder and inorder traversal