*(leetcode) Construct Binary Tree from Preorder and Inorder Traversal (tree)

来源:互联网 发布:刷帮豆软件怎么下载 编辑:程序博客网 时间:2024/05/06 02:31

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

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


/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {    int pi = 0;    TreeNode * function(vector<int> &preorder, vector<int> &inorder, int l, int r){        if(l>r)            return NULL;        if(l==r){            TreeNode * node = new TreeNode(inorder[l]);            pi++;            return node;        }        int i ;        for(i=l;i<=r;i++){            if(preorder[pi]==inorder[i]){                pi++;                TreeNode *leftTmp = function(preorder, inorder, l, i-1);                TreeNode *rightTmp = function(preorder, inorder, i+1, r);                TreeNode * root = new TreeNode(inorder[i]);                root->left = leftTmp;                root->right = rightTmp;                return root;            }        }     }public:    TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {        int n = preorder.size();        return function(preorder,inorder, 0, n-1);    }};



0 0