5.2.1 Construct Binary Tree from Preorder and Inorder Traversal

来源:互联网 发布:西安软件公寓a区 编辑:程序博客网 时间:2024/05/22 09:31

/* Author: Annie Kim, anniekim.pku@gmail.com Date: May 16, 2013 Problem: Construct Binary Tree from Preorder and Inorder Traversal Difficulty: Easy Source: http://leetcode.com/onlinejudge#question_105 Notes: 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: Recursion. */   /** * 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) {        return buildTreeRe(preorder.begin(), inorder.begin(), preorder.size());    }    TreeNode *buildTreeRe(vector<int>::iterator preorder, vector<int>::iterator inorder, int N) {        if (N <= 0) return NULL;        vector<int>::iterator it = find(inorder, inorder + N, *preorder);        int pos = it - inorder;        TreeNode *root = new TreeNode(*preorder);        root->left = buildTreeRe(preorder+1, inorder, pos);        root->right = buildTreeRe(preorder+1+pos, inorder+pos+1, N-1-pos);        return root;    }};


0 0
原创粉丝点击