可视化图解算法: 二叉树的中序遍历

news/2025/4/2 9:06:21/文章来源:https://www.cnblogs.com/jiangzhou/p/18802756

1. 题目

描述

给定一个二叉树的根节点root,返回它的中序遍历结果。

数据范围:树上节点数满足 0≤n≤1000,树上每个节点的值满足 0 ≤val≤1000
进阶:空间复杂度 O(n),时间复杂度 O(n)

示例1

输入:

{1,2,#,#,3}

返回值:

[2,3,1]  

示例2

输入:

{}

返回值:

[]

示例3

输入:

{1,2}

返回值:

[2,1]

示例4

输入:

{1,#,2}

返回值:

[1,2]

2. 解题思路

需要先明确二叉树【中序】遍历的规则:

二叉树的遍历一般使用【递归】的方法。如果要采用递归方法需满足递归的2个条件:

可以看出,对于左子树、右子树的遍历操作与整个二叉树一样,只是数据规模不同。

对于整颗二叉树来说,叶子节点左右子树都是Null,满足递归的第二个条件:不能无限循环,有终止条件(节点为Null)。因此可以使用递归来完成二叉树的中序遍历。

这时,就可以依据前序遍历的规则写出递推公式与伪代码:

如果文字描述的不太清楚,你可以参考视频的详细讲解。

  • Python版本:https://www.bilibili.com/cheese/play/ep1371455
  • Java版本:https://www.bilibili.com/cheese/play/ep1367105
  • Golang版本:https://www.bilibili.com/cheese/play/ep1364645

3. 编码实现

核心伪代码如下:

/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param root TreeNode类* @return int整型一维数组*/
func inorderTraversal(root *TreeNode) []int {// write code herelist := make([]int, 0)midOrder(&list, root) //注意:传递的是切片对应的指针(切片的地址),否则会变成值传递,最后返回空切片return list
}func midOrder(list *[]int, root *TreeNode) {// 2. 递归终止条件:遇到空节点则返回if root == nil {return}// 1. 问题分解(递推公式)// 1.1 先左子树midOrder(list, root.Left)// 1.2 再访问根节点*list = append(*list, root.Val)// 1.3 最后去右子树midOrder(list, root.Right)}

具体完整代码你可以参考下面视频的详细讲解。

  • Python版本:https://www.bilibili.com/cheese/play/ep1371455
  • Java版本:https://www.bilibili.com/cheese/play/ep1367105
  • Golang版本:https://www.bilibili.com/cheese/play/ep1364645

4.小结

中序遍历的规则是:先左子树 、再节点、最后右子树。

二叉树的中序遍历满足递归的两个条件,因此可以通过递归很快写出对应的递推公式:

f(node)= f(node.左子树) +output(node.val) +f (node.右子树) ,其中 f (空节点) = 空。

再根据递推公式就可以很快将其翻译成对应的代码。


《数据结构与算法》深度精讲课程正式上线啦!七大核心算法模块全解析:

✅ 链表 ✅ 二叉树 ✅二分查找、排序 ✅ 堆、栈、队列 ✅回溯算法 ✅ 哈希算法 ✅ 动态规划

无论你是备战笔试面试、提升代码效率,还是突破技术瓶颈,这套课程都将为你构建扎实的算法思维底座。🔥立即加入学习打卡,与千名开发者共同进阶!

  • Python编码实现:https://www.bilibili.com/cheese/play/ep1509965
  • Java编码实现:https://www.bilibili.com/cheese/play/ep1510007
  • Golang编码实现:https://www.bilibili.com/cheese/play/ep1509945

对于二叉树的相关算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。具体也可以参考视频详细讲解。

今日佳句:落霞与孤鹜齐飞,秋水共长天一色。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/908741.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CH58x/CH59x不同类型广播使用

前言:在日常使用的时候我们用到的广播基本就是普通从机广播,在有特殊使用场景的时候我们可能会用到定向广播和拓展广播。本次对使用对定向广播和拓展广播。 一:定向广播 定向广播类型是为了尽可能快的连接,俗称回连包,这种报文包含两个地址:广播者的地址和发起者的地址。…

k 近邻算法

什么是 k 近邻? k 近邻(K-NearestNeighbor,简称 KNN)算法应该是机器学习中最简单的一个算法了,不过它虽然简单,但也有很多优点,比如:思想极度简单; 使用的数学知识很少(近乎为 0) 对于一些特定的数据集有非常好的效果; 可以解释机器学习算法使用过程中的很多细节问…

个性化配色方案

配置配色方案在app主页点击存储选择内部在根目录下找到 config 目录, 如果没有的话就创建进入 config 目录, 找到 ColorScheme 目录, 如果没有就创建进入 ColorScheme 目录, 可以创建 light.json 和 dark.json 两个文件, 一个用于在亮色模式下显示的配色方案, 一个用于暗色模式…

编辑器插件

开发编辑器插件步骤如下:在 build.gradle.kts 文件中添加 m8test sdk 依赖 , 为了减小插件apk大小, 如果是 M8Test Version Catalog 中存在的依赖库请使用 compileOnly 来依赖项目import com.m8test.util.VersionUtilsplugins {alias(m8test.plugins.android.application)alias…

基于分数Talbot效应的阵列光学涡旋产生matlab模拟与仿真

1.程序功能描述 基于分数Talbot效应的阵列光学涡旋产生matlab模拟与仿真,分别测试正方形,旋转正方形以及六边形三种阵列形状下的光学涡旋。 2.测试软件版本以及运行结果展示MATLAB2013b版本运行 测试正方形: 测试旋转正方形: 测试六边形: (完整程序运行后无水印…

组件插件

开发组件插件步骤如下:在 build.gradle.kts 文件中添加 m8test sdk 依赖 , 为了减小插件apk大小, 如果是 M8Test Version Catalog 中存在的依赖库请使用 compileOnly 来依赖项目import com.m8test.util.VersionUtilsplugins {alias(m8test.plugins.android.application)alias(m…

python-cv2读取图片位置+设置图片上文字的位置、字体、颜色等参数

import cv2 # cv2读取图片位置,图片位置必须存在桌面,与cv2的路径一样,并且图片格式和名称必须一致img = cv2.imread(face1.jpg) # POS-10-50指字的上下左右位置, font指字体,color的255指字颜色绿色pos= (10,50) font = cv2.FONT_HERSHEY_SIMPLEX color = (255,255,0) #设…

语言插件

开发语言插件步骤如下:在 build.gradle.kts 文件中添加 m8test sdk 依赖 , 为了减小插件apk大小, 如果是 M8Test Version Catalog 中存在的依赖库请使用 compileOnly 来依赖项目import com.m8test.util.VersionUtilsplugins {alias(m8test.plugins.android.application)alias(m…

通用插件

开发通用插件步骤如下:在 build.gradle.kts 文件中添加 m8test sdk 依赖 , 为了减小插件apk大小, 如果是 M8Test Version Catalog 中存在的依赖库请使用 compileOnly 来依赖项目import com.m8test.util.VersionUtilsplugins {alias(m8test.plugins.android.application)alias(m…

阿里云服务器的网站被提示该内容禁止访问的解决办法

当阿里云提示“该内容禁止访问”时,通常是因为网站被检测到存在违法或不良信息,导致URL被屏蔽。以下是解决该问题的详细步骤和防护建议:一、问题描述现象:网站无法访问,提示“该内容禁止访问”。 阿里云发送短信或邮件通知,明确违规URL和具体违规内容。原因:网站存在漏洞…

通义灵码 Rules 来了:个性化代码生成,对抗模型幻觉

通义灵码又上新外挂啦,Project Rules来了。当模型生成代码不精准,试下通义灵码 Rules,对抗模型幻觉,硬控 AI 根据你的代码风格和偏好生成代码和回复。分享你的Rules规则,赢取通义灵码头号玩家活动奖品, 立即参与 通义灵码又上新外挂啦,Project Rules来了。当模型生成代码…