zoukankan      html  css  js  c++  java
  • LeetCode:105_Construct Binary Tree from Preorder and Inorder Traversal | 根据前序和中序遍历构建二叉树 | Medium

    要求:通过二叉树的前序和中序遍历序列构建一颗二叉树

    代码如下:

     1 struct TreeNode {
     2     int            val;
     3     TreeNode    *left;
     4     TreeNode    *right;
     5     TreeNode(int x): val(x),left(NULL), right(NULL) {}
     6 };
     7 
     8 typedef vector<int>::iterator Iter;
     9 TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) 
    10 {
    11     return buildTreeRecur(preorder.begin(), preorder.end(), inorder.begin(), inorder.end());
    12 }
    13 
    14 TreeNode *buildTreeRecur(Iter pstart, Iter pend, Iter istart, Iter iend)
    15 {
    16     if(pstart == pend || istart == iend)
    17         return NULL;
    18     int ival = *pstart;
    19     Iter ipos = find(istart, iend, ival);
    20     TreeNode *res = new TreeNode(ival);
    21     res->left = buildTreeRecur(pstart + 1, pstart+1+(ipos-istart), istart, ipos);
    22     res->right = buildTreeRecur(pstart+1+(ipos-istart), pend, ipos+1, iend);
    23     return res;
    24 }
  • 相关阅读:
    Redis开发与运维:SDS
    Redis开发与运维:数据迁移
    我的2019上半年
    C# 并发编程
    经典排序算法 — C# 版(上)
    图解 -- 树的汇总
    图解--队列、并发队列
    栈到CLR
    我们的数组
    算法复杂度
  • 原文地址:https://www.cnblogs.com/bakari/p/4126700.html
Copyright © 2011-2022 走看看