zoukankan      html  css  js  c++  java
  • leetcode[106]Construct Binary Tree from Inorder and Postorder Traversal

    Given inorder and postorder 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:
    template<typename Iter>
    void creatTree(TreeNode *&root,Iter inBeg,Iter inEnd, Iter posBeg,Iter posEnd)
    {
        if(inBeg==inEnd||posBeg==posEnd)
        {
            root=NULL;
            return;
        }
        posEnd--;
        root=new TreeNode(*posEnd);
        Iter tmp=find(inBeg,inEnd,*posEnd);
        int leftsize=tmp-inBeg;
        creatTree(root->left,inBeg,tmp,posBeg,posBeg+leftsize);
        creatTree(root->right,tmp+1,inEnd,posBeg+leftsize,posEnd);
    }
    TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) 
    {
        TreeNode *root;
        creatTree(root,inorder.begin(),inorder.end(),postorder.begin(),postorder.end());
        return root;        
    }
    };
  • 相关阅读:
    我来解数独(附delphi源码)
    jquery(三)
    jquery(二)
    jquery(一)
    前端之JS(五)
    前端之JS(四)
    前端之JS(三)
    前端之JS(二)
    前端之CSS(三)
    前端之CSS(二)
  • 原文地址:https://www.cnblogs.com/Vae1990Silence/p/4281336.html
Copyright © 2011-2022 走看看