• 剑指offer——05重建二叉树


    题目描述

    输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
     
    已知中序遍历和前序遍历,可以得到唯一的二叉树
     
     1 class Solution {
     2 public:
     3     TreeNode* reConstructBinaryTree(vector<int> pre, vector<int> vin) {
     4         if (pre.size() == 0 || vin.size() == 0 || pre.size() != vin.size())
     5             return nullptr;
     6         return createTree(pre, vin, 0, pre.size() - 1, 0, pre.size() - 1);
     7     }
     8     TreeNode *createTree(vector<int> pre, vector<int> vin, int inL, int inR, int preL, int preR)
     9     {
    10         if (inL > inR)return nullptr;
    11         TreeNode *root = new TreeNode(pre[preL]);
    12         int k = inL;
    13         while (k <= inR && vin[k] != pre[preL])k++;
    14         int m = k - inL;
    15         root->left = createTree(pre, vin, inL, k - 1, preL + 1, preL + m);
    16         root->right = createTree(pre, vin, k + 1, inR, preL + m + 1, preR);
    17         return root;
    18     }
    19 };
  • 相关阅读:
    在ubuntu系统使用SSR
    Pandas库
    Numpy
    06-Python之标准库
    do{}while(0)
    inet_XX族函数
    大端小端
    c++ 强制类型转换
    auto类型推导
    const浅析
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11651182.html
Copyright © 2020-2023  润新知