zoukankan      html  css  js  c++  java
  • 剑指office--------重建二叉树

    题目描述

    输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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     TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
    13         if (pre.size()==0||vin.size()==0)    return nullptr;
    14         TreeNode *Head=new TreeNode(pre[0]);
    15         int len=pre.size(),rt;
    16         vector<int>pre1,vin1,pre2,vin2;
    17         for (int i=0;i<len;i++){
    18             if (vin[i]==pre[0]){
    19                 rt=i;
    20                 break;
    21             }
    22         }
    23         for (int i=0;i<rt;i++){
    24             pre1.push_back(pre[i+1]);
    25             vin1.push_back(vin[i]);
    26         }
    27         for (int i=rt+1;i<len;i++){
    28             pre2.push_back(pre[i]);
    29             vin2.push_back(vin[i]);
    30         }
    31         Head->left=reConstructBinaryTree(pre1,vin1);
    32         Head->right=reConstructBinaryTree(pre2, vin2);
    33         return Head;
    34     }
    35 };

    特点:

    前序遍历中,第一个数便是根结点,

    中序遍历中,结点的右边是其的右子树,左边则是左子树。

    两者相连,例:

    前序遍历序列{1,2,4,7,3,5,6,8}    pre

    中序遍历序列{4,7,2,1,5,3,8,6}    vin 

    4 7 2是1的右子树,在先序遍历中,对应的是2,4,7,   

    边界:vin【0】与vin【2】  对应区间{4,7,2}

    边界:pre【1】与pre【3】      对应区间{2,4,7}

    对应关系就是左子树的前序遍历比中序遍历快一单位。

    右子树边界则相同,   vin【4】与vin【7】  对应区间{5,3,8,6}

              pre【4】与pre【7】对应区间{3,5,6,8}

  • 相关阅读:
    ASP.NET MVC自定义Module记录管道事件执行顺序
    Pro ASP.NET MVC 5 Platform-第三章 ASP.NET 生命周期
    C#基础-反射
    C#7语法快速参考-第一章 Hello World
    两张趣图助你理解 HTTP 状态码!
    dev listbox使用
    aspose导出数据
    dev chart使用
    linq多个条件
    json返回数据多个是数组,单个就不是处理方案
  • 原文地址:https://www.cnblogs.com/q1204675546/p/13408850.html
Copyright © 2011-2022 走看看