Leetcode Construct Binary Tree from Preorder and Inorder Traversal

来源:互联网 发布:瘦小腿 知乎 编辑:程序博客网 时间:2024/06/06 04:41

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 a binary tree node. * 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 plen = preorder.size(),ilen = inorder.size();                return buildTree(preorder,0,plen-1,inorder,0,ilen-1);    }        TreeNode* buildTree(vector<int>& preorder,int pstart,int pend,vector<int>& inorder,int istart,int iend)    {        if(pstart > pend || istart > iend)            return NULL;                    TreeNode* root=new TreeNode(preorder[pstart]);                int i;        for(i=0;i<=iend-istart+1;i++)            if(preorder[pstart] == inorder[istart+i])                break;        root->left = buildTree(preorder,pstart+1,pstart+i,inorder,istart,istart+i-1);        root->right = buildTree(preorder,pstart+i+1,pend,inorder,istart+i+1,iend);        return root;    }};


阅读全文
0 0