zoukankan      html  css  js  c++  java
  • 19.3.5 [LeetCode 105] Construct Binary Tree from Preorder and Inorder Traversal

    Given preorder and inorder traversal of a tree, construct the binary tree.

    Note:
    You may assume that duplicates do not exist in the tree.

    For example, given

    preorder = [3,9,20,15,7]
    inorder = [9,3,15,20,7]

    Return the following binary tree:

        3
       / 
      9  20
        /  
       15   7
     1 class Solution {
     2 public:
     3     int p1;
     4     TreeNode*buildchild(vector<int>& preorder, vector<int>& inorder, int i1, int i2) {
     5         if (i2 < i1)
     6             return NULL;
     7         int nowroot = preorder[p1];
     8         TreeNode*ans = new TreeNode(nowroot);
     9         for (int i = i1; i <= i2; i++)
    10             if (inorder[i] == nowroot) {
    11                 if (i != i1) {
    12                     ++p1;
    13                     ans->left = buildchild(preorder, inorder, i1, i - 1);
    14                 }
    15                 if (i != i2) {
    16                     ++p1;
    17                     ans->right = buildchild(preorder, inorder, i + 1, i2);
    18                 }
    19             }
    20         return ans;
    21     }
    22     TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
    23         p1 = 0;
    24         return buildchild(preorder, inorder, 0, inorder.size() - 1);
    25     }
    26 };
    View Code
  • 相关阅读:
    5.5 数据库约束
    5.4 数据库数据类型
    5.3 数据 库,表 操作
    5.2 数据库引擎
    5.1 数据库安装
    4.6 并发编程/IO模型
    4.5 协程
    4.4 线程
    在线编辑器 引入方法
    MySQL查看版本号的五种方式介绍1111111
  • 原文地址:https://www.cnblogs.com/yalphait/p/10475443.html
Copyright © 2011-2022 走看看