您的位置:首页 > 其它

LeetCode之Construct Binary Tree from Preorder and Inorder Traversal

2013-12-12 09:45 411 查看
这个题和由中序和后序构建二叉树基本一样,看看就行了。。。。LeetCode 之 Construct Binary Tree
from Inorder and Postorder Traversal

代码(136ms):

class Solution {
public:
TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {
return recover(inorder,0, inorder.size()-1, preorder ,0, preorder.size()-1);
}
TreeNode* recover(vector<int> &inorder, int inStart, int inEnd, vector<int> &preorder ,int preStart, int preEnd){
if(inStart > inEnd) return NULL;
int root = preorder[preStart];
int pos = 0;//root前有pos个前序的
for(int i= 0;i<=inEnd-inStart;i++){
if(inorder[inStart+i] == root){
pos = i;
break;
}
}
TreeNode * node = new TreeNode(root);
node->left = recover(inorder , inStart , inStart+pos-1 , preorder, preStart+1 , preStart+pos);
node->right = recover(inorder , inStart+pos+1 , inEnd , preorder, preStart+pos+1 , preEnd);
return node;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐