LeetCode106. Construct Binary Tree from Inorder and Postorder Traversal
LeetCode106. Construct Binary Tree from Inorder and Postorder Traversal
文章目录
- 一、题目
- 二、题解
一、题目
Given two integer arrays inorder and postorder where inorder is the inorder traversal of a binary tree and postorder is the postorder traversal of the same tree, construct and return the binary tree.
Example 1:
Input: inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]
Output: [3,9,20,null,null,15,7]
Example 2:
Input: inorder = [-1], postorder = [-1]
Output: [-1]
Constraints:
1 <= inorder.length <= 3000
postorder.length == inorder.length
-3000 <= inorder[i], postorder[i] <= 3000
inorder and postorder consist of unique values.
Each value of postorder also appears in inorder.
inorder is guaranteed to be the inorder traversal of the tree.
postorder is guaranteed to be the postorder traversal of the tree.
二、题解
注意切分完中序数组后,需要用postorder.resize(postorder.size() - 1);
对后序数组进行修改
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {if(postorder.size() == 0) return nullptr;int rootVal = postorder[postorder.size()-1];TreeNode* root = new TreeNode(rootVal);if(postorder.size() == 1) return root;//切中序数组int index = 0;for(int i = 0;i < inorder.size();i++){if(inorder[i] == rootVal){index = i;break;}}vector<int> leInorder;vector<int> riInorder;for(int i = 0;i < index;i++){leInorder.push_back(inorder[i]);}for(int i = index + 1;i < inorder.size();i++){riInorder.push_back(inorder[i]);}postorder.resize(postorder.size() - 1);//切后序数组vector<int> lePostorder;vector<int> riPostorder;for(int i = 0;i < leInorder.size();i++){lePostorder.push_back(postorder[i]);}for(int i = leInorder.size();i < postorder.size();i++){riPostorder.push_back(postorder[i]);}root->left = buildTree(leInorder,lePostorder);root->right = buildTree(riInorder,riPostorder);return root;}
};
- Windows隐藏工具可以修复90%的死亡蓝屏
- C# 实现动态数组
- 原生JS实现视频截图
- Vue3 + Vite + Ts 开发必备的 VSCode 插件
- 股市助手:实时股市快讯,真人语音播报,助您第一时间获取最新资讯(自己写的分享给需要的人)
- AERMOD模型配置方法
- XSelect清空选中值
- 【Amazon】云上探索实验室—了解 AI 编程助手 Amazon Codewhisperer
- 怎样用 vs2017编写一个cpp并运行
- 一款IT团队都在用的私有化知识库,技术开放,还开源了!
- 本地跑项目解决跨域问题
- 家政服务小程序源码系统+上门预约服务 源码完全开源可二次开发 带完整的搭建教程
- 2.4 Windows驱动开发:内核字符串拷贝与比较
- 【阿里云数据采集】采集标准Docker容器日志:部署阿里云Logtail容器以及创建Logtail配置,用于采集标准Docker容器日志
- 思维导图软件 Xmind mac中文版软件特点
- Ansible playbook详解
- pcie【C#】