The recursive method constructs the binary tree by using the first order traversal and the middle sequence traversal, and the binary tree can also be constructed by the middle sequence traversal and the post-order traversal.
//constructing binary tree using ordinal traversal and middle sequence traversaltreenode* Buildtree (vector<int>& Preorder, vector<int>&inorder) {TreeNode*root=NULL; if(preorder.size () = =0|| Inorder.size () = =0|| Preorder.size ()! =inorder.size ())returnRoot; Root=tree (Preorder,0, Preorder.size ()-1, Inorder,0, Inorder.size ()-1); returnRoot;} TreeNode* Tree (vector<int>&preorder,intPrebegin,intpreend,vector<int>&inorder,intInbegin,intinend) {TreeNode*root=NULL; if(preorder.size () = =0|| Inorder.size () = =0|| Preorder.size ()! =inorder.size ())returnRoot; TreeNode*leftnode=NULL; TreeNode*rightnode=NULL; Root->val=Preorder[prebegin]; intRootval=root->Val; inti; for(i=inbegin;i<=inend;i++) if(inorder[i]==root->val) Break; if(i>inend)returnRoot; intleftlen=i-Inbegin; intrightlen=inend-i-1; Leftnode=buildtree (preorder,prebegin+1, prebegin+leftlen,inorder,inbegin,inbegin+Leftlen); Rightnode=buildtree (preorder,prebegin+1+leftlen,preend,inorder,i+1, i+Rightlen); Root->left=Leftnode; Root->right=Rightnode; returnRoot;}
Constructing binary tree with sequence traversal and post-order traversal