阅读背景:

二叉树 知道其他两种遍历方式求另一种

来源:互联网 

已知先序和中序

/**
 * 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 prel=preorder.size();
    int in=inorder.size();
    return suan(preorder,0,prel-1,inorder,0,in-1);
}
TreeNode* suan(vector<int>& preorder,int ps,int pe, vector<int>& inorder,int is,int ie)
{
    if(ps==pe)
        return new TreeNode(preorder[ps]);
    if(is>ie||ps>pe)
        return NULL;

    TreeNode* root = new TreeNode(preorder[ps]);
    int i=is;
    while(i<=ie)
    {
        if(inorder[i]==preorder[ps])

            break;
        i++;
    }
    int len=i-is;
    root->left=suan(preorder,ps+1,ps+len,inorder,is,is-1+len);
    root->right=suan(preorder,ps+1+len,pe,inorder,is+len+1,ie);
    return root;
}

};/**
 * Definition for a binary tre



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: