zoukankan      html  css  js  c++  java
  • 重建二叉树

    题目描述

    输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
     
     1 /**
     2  * Definition for binary tree
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) {
    13         if (pre.size() != 0 && in.size() != 0 && pre.size() == in.size())
    14             {
    15                 return build(pre,in,0,pre.size()-1,0,in.size()-1);
    16             }
    17         else
    18             {
    19                 return NULL;
    20             }
    21         
    22     }
    23     
    24     struct TreeNode* build(vector<int> pre,vector<int> in,int l1,int r1,int l2,int r2)
    25     {
    26     if(l1<=r1)
    27     {
    28         int i=l2;
    29         while(pre[l1]!=in[i])
    30             i++;
    31         TreeNode* T= new TreeNode(in[i]);
    32         T->left=build(pre,in,l1+1,l1+i-l2,l2,i-1);
    33         T->right=build(pre,in,l1+i-l2+1,r1,i+1,r2);
    34         return T;
    35     }
    36     else return NULL;
    37     }
    38 };
  • 相关阅读:
    华为软件开发云评测
    个人技术博客(α)
    结对第二次作业
    结对第一次作业----部门通
    数独设计
    2017软件工程实践第一次作业
    Alpha冲刺博客集
    个人作业——软件工程实践总结作业
    用户使用调查报告
    总结随笔(Beta)
  • 原文地址:https://www.cnblogs.com/xiaoyesoso/p/5142622.html
Copyright © 2011-2022 走看看