zoukankan      html  css  js  c++  java
  • LeetCode OJ--Construct Binary Tree from Preorder and Inorder Traversal *

    http://oj.leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/

    根据二叉树的前序遍历和中序遍历序列求二叉树

    学习:迭代器的使用和auto变量

    #include <iostream>
    #include <vector>
    using namespace std;
    
     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) 
        {
            return buildTree(begin(preorder),end(preorder),begin(inorder),end(inorder));
        }
    
        template<typename InputIterator>
        TreeNode* buildTree(InputIterator pre_first,InputIterator pre_last,InputIterator in_first,InputIterator in_last)
        {
            if(pre_first == pre_last)
                return nullptr;
            if(in_first ==in_last)
                return nullptr;
    
            auto root = new TreeNode(*pre_first);
    
            auto inRootPos = find(in_first,in_last,*pre_first);
            auto leftSize = distance(in_first,inRootPos);
    
            root->left = buildTree(next(pre_first),next(pre_first,leftSize+1),in_first,next(in_first,leftSize));
            root->right = buildTree(next(pre_first,leftSize+1),pre_last,next(inRootPos),in_last);
    
            return root;
        }
    };
    
    int main()
    {
        Solution myS;
        int arr1[7] = {1,2,4,5,3,6,7 };
        int arr2[7] = {4,2,5,1,6,3,7 };
        vector<int> inorder(arr1,arr1+7) ;
        vector<int> postorder(arr2 ,arr2+7);
        TreeNode *myNode;
    
        myNode = myS.buildTree(inorder,postorder);
         
        cout<<"hi"<<endl;
        return 0;
    }
  • 相关阅读:
    sae-xhprof调试性能
    VC++常用函数
    C++资料收集&整理
    C++宽窄字符串转换
    #MySQL for Python(MySQLdb) Note
    VC++ ADO相关
    MFC各种控件的常见操作(逐步添加中......)
    关于Sql注入的那些事
    Python中socket经ssl加密后server开多线程
    网络编程
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3698115.html
Copyright © 2011-2022 走看看