码迷,mamicode.com
首页 > 其他好文 > 详细

Construct Binary Tree From Preorder and Inorder Traversal

时间:2015-07-29 21:16:40      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

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

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

技术分享

Analyse: We can see from the pic above that the left of the pivot element of Preorder sequence in Inorder sequence is the left subtree of this element, and the right part is the right subtree of this element. 

Runtime: 64ms.

技术分享Recursion
 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
13         if(preorder.size() == 0) return NULL;
14         return build(preorder, 0, preorder.size() - 1, inorder, 0, inorder.size() - 1);
15     }
16     TreeNode* build(vector<int>& preorder, int preLeft, int preRight, vector<int>& inorder, int inLeft, int inRight){
17         if(preLeft > preRight) return NULL; //when will this case appear
18         
19         TreeNode* root = new TreeNode(preorder[preLeft]);
20         if(preLeft == preRight) return root;
21         
22         //find the position of root(preorder[preLeft]) in inorder sequence
23         int index = 0;
24         for(; index < inorder.size(); index++){
25             if(inorder[inLeft + index] == preorder[preLeft]) break;
26         }
27         
28         root->left = build(preorder, preLeft + 1, preLeft + index, inorder, inLeft, inLeft + index - 1);
29         root->right = build(preorder, preLeft + index + 1, preRight, inorder, inLeft + index + 1, inRight);
30         
31         return root;
32     }
33 };

 

Construct Binary Tree From Preorder and Inorder Traversal

标签:

原文地址:http://www.cnblogs.com/amazingzoe/p/4687223.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!