使用递归思想遍历二叉树

news/2024/7/20 21:06:01 标签: 深度优先, 算法

二叉树的遍历主要有两种方式:深度优先遍历和广度优先遍历
这篇主要讲使用深度优先遍历来遍历二叉树
深度优先遍历有以下三种
前、中、后序遍历,这三种遍历方式的主要区别是中间节点的位置所在的顺序
前序遍历:中间节点在叶子节点前面
中序遍历:中间节点在叶子节点中间
后续遍历:中间节点在叶子节点后面
在这里插入图片描述
本文主要以中序遍历为例讲解递归遍历二叉树的过程

type TreeNode struct {
	Val   int //值
	Left  *TreeNode
	Right *TreeNode
}

func inorderTraversal(root *TreeNode) []int {
	res := make([]int, 0)
	var traversal func(node *TreeNode)
	traversal = func(node *TreeNode) {
		if node == nil {
			return
		}
		traversal(node.Left)
		res = append(res, node.Val)
		traversal(node.Right)
	}
	traversal(root)
	return res
}

http://www.niftyadmin.cn/n/5042384.html

相关文章

Android面试题汇总(三)

Android 四大组件相关 1、Activity与Fragment之间常见的通讯方式 对于Activity与Fragment直接的相互调用: 1、Activity调用Fragment直接调用就好了,Activity一般是持有Fragment实例的。或者通过Fragment的id或者tag获取Fragment的实例 2、Fragment调用A…

Java学习笔记39——网络编程03

TCP通信程序 TCP通信程序TCP通信原理TCP发送数据的步骤TCP接收数据的步骤TCP通讯程序练习练习1练习2练习3练习4练习5练习6 TCP通信程序 TCP通信原理 TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信的两端形成网络虚拟…

【Java】Pattern 与 Matcher 类的常见应用

在 Java 编程中,我们经常需要处理字符串的匹配和替换操作。为了便捷地实现这些功能,Java 提供了 Pattern 类和 Matcher 类。Pattern 类用于定义正则表达式模式,而 Matcher 类用于在给定的输入字符串中进行匹配操作。 本文将介绍 Pattern 类和…

Leetcode.2522 将字符串分割成值不超过 K 的子字符串

题目链接 Leetcode.2522 将字符串分割成值不超过 K 的子字符串 rating : 1605 题目描述 给你一个字符串 s s s ,它每一位都是 1 1 1 到 9 9 9 之间的数字组成,同时给你一个整数 k k k 。 如果一个字符串 s s s 的分割满足以下条件,我们…

面向5G通信的射频关键技术解决毫米波传播距离短难题

5G通信即是第五代通信技术,这是通信领域的重要发展方向,5G通信不再局限于传统的人和人之间通信,而是在此技术上拓展到人与物的通信、物与物的通信,并由此推出车联网、智能家居、企业管理、工业控制、移动医疗等物联网通信的多样化…

科技云报道:大模型的阴面:无法忽视的安全隐忧

科技云报道原创。 在AI大模型的身上,竟也出现了“to be or not to be”问题。 争议是伴随着大模型的能力惊艳四座而来的,争议的核心问题在于安全。安全有两个方面,一个是大模型带来的对人类伦理的思考,一个是大模型本身带来的隐…

Nmap安装和使用详解

Nmap安装和使用详解 Nmap概述功能概述运行方式 Nmap安装官方文档参考:Nmap参数详解目标说明主机发现端口扫描Nmap将目标主机端口分成6种状态:Nmap产生结果是基于机器的响应报文,而这些主机可能是不可信任的,会产生一些迷惑或者误导…

Unity中浮力与水物理的完整指南:基于C#和现有物理引擎的简单实现

第一部分:引言与基础知识 1. 引言 Unity作为一款广受欢迎的游戏开发引擎,为开发者提供了丰富的功能和工具。在各种游戏和应用中,模拟真实的水物理和浮力效果是常见的需求。虽然有很多高级的方法可以实现这种效果,但在这篇文章中…