当前位置: 首页 > news >正文

【算法】递归+深搜:106.从中序与后序遍历序列构造二叉树(medium)

目录

1、题目链接

相似题目:

2、题目

3、解法

函数头-----找出重复子问题

函数体---解决子问题

4、代码


1、题目链接

106.从中序与后序遍历序列构造二叉树(LeetCode)

相似题目:

105.从前序与中序遍历序列构造二叉树

889.根据前序和后序遍历构造二叉树(LeetCode)

2、题目

3、解法

整体思路可以借鉴这篇文章:【算法】递归+深搜:105.从前序与中序遍历序列构造二叉树-CSDN博客

首先,我们还是先确定,中序和后序对于我们构建二叉树的作用。


中序遍历性质: 节点按照 [ 左子树 | 根节点 | 右子树 ] 排序。

后序遍历性质: 节点按照 [ 左子树 | 右子树 | 根节点 ] 排序。

后序找出根节点的值,

中序找出左、右子树。

函数头-----找出重复子问题

重复子问题:前序构建二叉树。(根节点、左子树根节点、右子树根节点)

参数: 后序数组、根节点在前序遍历的索引 root 、子树在中序遍历的左边界 left 、子树在中序遍历的右边界 right 

函数体---解决子问题

1、构建根节点、

2、找出根节点在中序遍历中对应的下标 " i "(利用哈希表进行辅助),划分左、右子树

3、构建左子树(更新参数root、left、right)

4、构建右子树(更新参数root、left、right)

4、代码

class Solution {unordered_map<int, int> hash;public:TreeNode* dfs(const vector<int>& postorder, int root, int left, int right){if (left > right)return NULL;TreeNode* node = new TreeNode(postorder[root]);//构建根节点int inorder_root = hash[postorder[root]];     //确定inorder中root的下标int right_size = right - inorder_root;node->left = dfs(postorder, root - 1 - right_size, left, inorder_root - 1);node->right = dfs(postorder, root - 1, inorder_root + 1, right);return node;}TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {//inorder填充hashfor (int i = 0; i < inorder.size(); i++){hash[inorder[i]] = i;}return dfs(postorder, inorder.size() - 1, 0, inorder.size() - 1);}};


http://www.mrgr.cn/news/66512.html

相关文章:

  • 【java】对象的内存存储
  • 电脑开机显示无信号然后黑屏怎么办?
  • HOT100_最大子数组和
  • 从零开始的LeetCode刷题日记:746. 使用最小花费爬楼梯
  • Go 中的 Context实现原理以及正确使用方式
  • RocketMQ可视化工具- Dashboard 使用教程 (附带可下载文件)
  • B2118 验证子串
  • Swift 开发教程系列 - 第5章:集合类型
  • oracle数据检查方法
  • 多client向同一个pushgateway推送指标被覆盖问题
  • 解密抖音推荐算法:个性化内容背后的技术奥秘
  • 【MongoDB】MongoDB的聚合(Aggregate、Map Reduce)与管道(Pipline) 及索引详解(附详细案例)
  • 一篇文章速通Java开发Stream流(流水线开发附斗地主小游戏综合案例)
  • 一文快速预览经典深度学习模型(一)——CNN、RNN、LSTM、Transformer、ViT
  • Vue:计算属性
  • JavaScript 变量作用域与函数调用机制:var 示例详解
  • SEO
  • 一个最简单的网络编程
  • OpenID Connect 和 OAuth 2.0 有什么不同?
  • Java继承练习
  • C++《list的模拟实现》
  • 通讯录(静态)
  • js基础篇笔记 (万字速通)
  • 【安装配置教程】二、VMware安装并配置ubuntu22.04
  • Kane-Mele X4Y2Z6材料自旋电子和谷电子理论研究
  • CSS的配色