标签:null treenode blog order ons nod ret sum note
Given preorder and inorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
解题思路:最经典的递归,已知先序和中序,构造树
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* build(vector<int>& preorder, vector<int>& inorder, int pleft, int pright, int ileft, int iright){ if(pleft == pright)return new TreeNode(preorder[pleft]); if(pleft > pright)return NULL; int pos; TreeNode* root = new TreeNode(preorder[pleft]); for(pos = ileft;pos <= iright; pos++){ if(inorder[pos] == preorder[pleft])break; } int lefthalf=pos-ileft; int righthalf=iright-pos; root->left = build(preorder,inorder,pleft+1,pleft+lefthalf,ileft,pos-1); root->right = build(preorder,inorder,pright-righthalf+1,pright,pos+1,iright); return root; } TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { return build(preorder,inorder,0,preorder.size()-1,0,inorder.size()-1); } };
105. Construct Binary Tree from Preorder and Inorder Traversal
标签:null treenode blog order ons nod ret sum note
原文地址:http://www.cnblogs.com/tsunami-lj/p/7604611.html