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;}
};
- 基于51单片机的智能窗控制系统设计
- nginx之使用与配置教程
- 臀部筋膜炎怎么治疗最有效
- 在AI时代提升个人晋升力的策略
- pcl+vtk(十)八叉树可视化显示
- 打破语言壁垒,实现全球商贸:多语言多商户跨境商城源码引领电商新潮流
- java常用队列与堆栈
- Elasticsearch【正则搜索】分析实践
- 关于论文图表目录和交叉引用的使用小结
- 加解密算法相关技术详解
- CodeEase标准化的低代码平台
- 【机器学习】 朴素贝叶斯算法:原理、实例应用(文档分类预测)
- MySQL数据库——存储过程
- 【KVM
- python解析wirshark抓包数据
- QNX 字符设备 resource manager 实例
- 【EI会议征稿】第四届环境资源与能源工程国际学术会议(ICEREE 2024)