【LeetCode】Construct Binary Tree from Preorder and Inorder Traversal

来源:互联网 发布:大数据市场 编辑:程序博客网 时间:2024/06/02 19:41

Given preorder and inorder traversal of a tree, construct the binary tree.

Note:
You may assume that duplicates do not exist in the tree.

思路:同Construct Binary Tree from Inorder and Postorder Traversal。

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {        int N = preorder.size();        return buildTreeRe(inorder.begin(),preorder.begin(),N);    }    TreeNode *buildTreeRe(vector<int>::iterator inorder,vector<int>::iterator preorder,int N){        if(N <= 0)return NULL;        vector<int>::iterator it = find(inorder,inorder+N,*preorder);        int pos = it - inorder;        TreeNode* root = new TreeNode(*it);        root->left = buildTreeRe(inorder,preorder+1,pos);        root->right = buildTreeRe(inorder+pos+1,preorder+pos+1,N-pos-1);        return root;    }};



0 0
原创粉丝点击