[Leetcode] #105 Construct Binary Tree from Preorder and Inorder Traversal

来源:互联网 发布:0基础学java好学吗 编辑:程序博客网 时间:2024/05/23 12:25

Discription:

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

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

Solution:

TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder, int ps, int pe, int is, int ie){if (ps > pe) return NULL;TreeNode *root = new TreeNode(preorder[ps]);int x;for (int i = is; i <= ie; i++){if (inorder[i] == root->val){x = i;break;}}root->left = buildTree(preorder, inorder, ps + 1, ps + x - is, is, x - 1);root->right = buildTree(preorder, inorder, pe - ie + x + 1, pe, x + 1, ie);return root;}TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {return buildTree(preorder, inorder, 0, preorder.size() - 1, 0, inorder.size() - 1);}

附:Leetcode源代码见我的GitHub   

0 0
原创粉丝点击