Construct Binary Tree from Preorder and Inorder Traversal (中序和后序建树,在题目给的函数中完成)【leetcode】

来源:互联网 发布:c语言api函数大全 编辑:程序博客网 时间:2024/05/16 05:36

题目: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 {public:    TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) {        int len=inorder.size();        if(len==0) return NULL;        vector<int> leftin,leftpr,rightin,rightpr;        bool flag=0;        int p;        for(int i=0;i<len;++i)        {            if(inorder[i]==preorder[0])            {                p=i;                flag=1;            }            else if(flag==0)            {                leftin.push_back(inorder[i]);                leftpr.push_back(preorder[i+1]);            }            else             {                                rightin.push_back(inorder[i]);                rightpr.push_back(preorder[i]);            }                    }        TreeNode *root=new TreeNode(inorder[p]);        {vector<int>().swap(inorder);}        {vector<int>().swap(preorder);}        root->left=buildTree(leftpr,leftin);        root->right=buildTree(rightpr,rightin);                return root;    }};


原创粉丝点击