博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode C++ 106. Construct Binary Tree from Inorder and Postorder Traversal【Tree/分治】中等
阅读量:2008 次
发布时间:2019-04-28

本文共 1498 字,大约阅读时间需要 4 分钟。

Given inorder and postorder traversal of a tree, construct the binary tree.

Note: You may assume that duplicates do not exist in the tree.

For example, given

inorder = [9,3,15,20,7]postorder = [9,15,7,20,3]

Return the following binary tree:

3   / \  9  20    /  \   15   7

题意:根据一棵树的中序遍历与后序遍历构造二叉树。可以假设树中没有重复的元素。


思路

简单的分治题目,递归解决。代码如下:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {
public: TreeNode* buildTree(vector
& inorder, vector
& postorder) {
return rebuild(0, inorder.size() - 1, 0, postorder.size() - 1, inorder, postorder); } TreeNode* rebuild(int leftin, int rightin, int leftpost, int rightpost, vector
& inorder, vector
& postorder) {
if (leftin > rightin || leftpost > rightpost) return nullptr; TreeNode *root = new TreeNode(postorder[rightpost]); int rootin = leftin; while (rootin <= rightin && inorder[rootin] != postorder[rightpost]) ++rootin; int leftsize = rootin - leftin; root->left = rebuild(leftin, rootin - 1, leftpost, leftpost + leftsize - 1, inorder, postorder); root->right = rebuild(rootin + 1, rightin, leftpost + leftsize, rightpost - 1, inorder, postorder); return root; }};

效率如下:

执行用时:52 ms, 在所有 C++ 提交中击败了26.98% 的用户内存消耗:16.9 MB, 在所有 C++ 提交中击败了85.71% 的用户

转载地址:http://mlotf.baihongyu.com/

你可能感兴趣的文章
山东科技大学2015-2016学年第一学期程序设计基础期末考试第一场 题解
查看>>
Python教程-----引用模块
查看>>
山东科技大学2020年4月9日题解
查看>>
蓝桥杯题解(二)
查看>>
蓝桥杯题解(三)
查看>>
数学建模需要的Matlab知识速成,两小时Matlab速成,Matlab小白教程
查看>>
逆向工程核心原理笔记(一)——Hello World-2
查看>>
逆向工程核心原理笔记(三)——IA-32寄存器
查看>>
lambda expressions are not supported at this language level
查看>>
Ngrok内网穿透教程(国内地址)
查看>>
SpringBoot利用AOP防止请求重复提交
查看>>
Linux下安装Mysql5..7(Centos7)--亲测
查看>>
Linux下安装Nginx(Centos7)
查看>>
Linux下安装JDK(Centos7)
查看>>
SQL优化--大数据量模糊查询缓慢
查看>>
Linux安装Zookeeper(Centos7)
查看>>
ACM进阶计划(来自于南阳理工学院)
查看>>
Scala学习第八天 Scala主构造器、私有构造器、构造器重载实战详解
查看>>
Scala学习第九天 Scala的内部类实战详解
查看>>
Scala学习第十天 Scala单例对象、伴生对象实战详解
查看>>