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}

  • 相关阅读:
    用CSV文件读写数据的两种方式(转)
    利用PHP生成二维码(转)
    PHP实现微博的同步发送(转)
    php实现网页标签补全方法(转)
    php 下载远程图片 的几种方法(转)
    Masonry+Infinite-Scroll实现无刷新无分页完美瀑布流(转)
    分享一个jQuery动态网格布局插件:Masonry(转)
    js判断图片是否显示
    PHP写入文件用file_put_contents代替fwrite优点多多(转)
    PHP 更高效的字符长度判断方法(转)
  • 原文地址:https://www.cnblogs.com/q1204675546/p/13408850.html
Copyright © 2011-2022 走看看