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

    先序:根》左》右
    中序:左》根》右
    后序:左》右》根
    e.g.
    {1,2,4,7,3,5,6,8}
    {4,7,2,1,5,3,8,6}
    先序第一个元素是根节点,在中序中找到后,中序左边的是左子树,右边是右子树
    ----------------------------------------------------------------------------------------------------
    时间限制:1秒 空间限制:32768K 热度指数:571383

    题目描述

    输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
    class Solution {
        public:
            struct TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) {
                if(in.size() == 0) return NULL;
                vector<int> pre_left,pre_right,in_left,in_right;
                int start = pre[0], pos;
                for( pos=0; pos<in.size(); pos++) {
                    if(in[pos] == start) break;
                }
                for(int i=0; i<in.size(); i++) {
                    if( i<pos) {
                        in_left.push_back(in[i]);
                        pre_left.push_back(pre[i+1]);
                    } else if(i>pos) {
                        in_right.push_back(in[i]);
                        pre_right.push_back(pre[i]);
                    }
                }
                TreeNode* node = new TreeNode(start);
                node->left = reConstructBinaryTree(pre_left, in_left);
                node->right = reConstructBinaryTree(pre_right, in_right);
                return node;
            }
    };
  • 相关阅读:
    Vue(知识讲解)
    爬虫框架:scrapy
    爬虫性能相关
    MongoDB
    Beautifulsoup模块
    selenium模块
    requests模块
    爬虫(集锦)
    爬虫目录
    Flask目录
  • 原文地址:https://www.cnblogs.com/slothrbk/p/10616652.html
Copyright © 2011-2022 走看看