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

2025-2-21 leetcode刷题情况(二叉树的修改与构造)

一、106.从中序与后序遍历序列构造二叉树

1.题目描述

给定两个整数数组 inorder和postorder,其中 inorder 是二又树的中序遍历,postorder 是同一棵树的后序遍历,请你构造并返回这颗二又树。

2.代码

3.思路

以后序数组的最后一个元素为切割点,先切中序数组,根据中序数组,反过来再切后序数组。一层一层切下去,每次后序数组最后一个元素就是节点元素。

代码框架

二、654.最大二叉树

1.题目描述

给定一个不重复的整数数组 nums。最大二叉树 可以用下面的算法从 nums 递归地构建:
1.创建一个根节点,其值为 nums 中的最大值。
2.递归地在最大值 左边 的 子数组前缀上 构建左子树。
3.递归地在最大值 右边 的 子数组后缀上 构建右子树。
返回nums 构建的最大二叉树

2.代码

3.思路

构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树。

  • 确定递归函数的参数和返回值

参数传入的是存放元素的数组,返回该数组构造的二叉树的头结点,返回类型是指向节点的指针。

  • 确定终止条件

题目中说了输入的数组大小一定是大于等于1的,所以我们不用考虑小于1的情况,那么当递归遍历的时候,如果传入的数组大小为1,说明遍历到了叶子节点了。

那么应该定义一个新的节点,并把这个数组的数值赋给新的节点,然后返回这个节点。 这表示一个数组大小是1的时候,构造了一个新的节点,并返回。

  • 确定单层递归的逻辑

这里有三步工作

  1. 先要找到数组中最大的值和对应的下标, 最大的值构造根节点,下标用来下一步分割数组。
  2. 最大值所在的下标左区间 构造左子树。这里要判断maxValueIndex > 0,因为要保证左区间至少有一个数值。
  3. 最大值所在的下标右区间 构造右子树。判断maxValueIndex < (nums.size() - 1),确保右区间至少有一个数值。

三、617.合并二叉树

1.题目描述

给你两棵二叉树:root1和root2
想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 nul的节点将直接作为新二又树的节点。
返回合并后的二叉树。
注意:合并过程必须从两个树的根节点开始。

2.代码

3.思路

这里运用的是递归方法,和遍历一棵二叉树一样,同时遍历两棵二叉树。

相关文章:

  • python面试题整理
  • 基于STM32的智能电力监测与需求响应系统
  • vue3 文件类型传Form Data数据格式给后端
  • 骶骨神经
  • GB28181协议详解
  • MyBatis框架详解与核心配置解读
  • 基于Django的购物商城平台的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
  • 数字内容体验的技术支持包含哪些核心功能?
  • 第八届先进算法与控制工程国际学术会议(ICAACE 2025)
  • 安科瑞能源物联网平台助力企业实现绿色低碳转型
  • 从 Linux 权限管理历史看 sudo、SUID 和 Capability 的演进
  • 毕业项目推荐:基于yolov8/yolo11的水稻叶片病害检测识别系统(python+卷积神经网络)
  • 数据结构——二叉树经典习题讲解
  • Linux下文件权限与安全
  • k8s故障处理经典案例(Classic Case of k8s Fault Handling)
  • QML Grid响应式布局要点(Qt 5.12.1)
  • 不同安装路径重复R包清理
  • 浅谈Word2vec算法模型
  • 【Mastering Vim 2_05】第四章:深入理解 Vim 的结构化文本
  • AI回答:Linux C/C++编程学习路线
  • 网站logo怎么修改/济南网站制作
  • 精通网站开发阅读/中央突然宣布一个大消息
  • 景点网站怎么做/seo网站快速排名
  • 男女做污视频网站/站长工具seo综合查询官网
  • 已有网站做百度推广/优化王
  • 企业平台网站建设/推广app最快的方法