使用递归思想遍历二叉树

二叉树的遍历主要有两种方式:深度优先遍历和广度优先遍历

这篇主要讲使用深度优先遍历来遍历二叉树

深度优先遍历有以下三种

前、中、后序遍历,这三种遍历方式的主要区别是中间节点的位置所在的顺序

前序遍历:中间节点在叶子节点前面

中序遍历:中间节点在叶子节点中间

后续遍历:中间节点在叶子节点后面

本文主要以中序遍历为例讲解递归遍历二叉树的过程

go 复制代码
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
}
相关推荐
naruto_lnq2 小时前
分布式系统安全通信
开发语言·c++·算法
Jasmine_llq2 小时前
《P3157 [CQOI2011] 动态逆序对》
算法·cdq 分治·动态问题静态化+双向偏序统计·树状数组(高效统计元素大小关系·排序算法(预处理偏序和时间戳)·前缀和(合并单个贡献为总逆序对·动态问题静态化
爱吃rabbit的mq3 小时前
第09章:随机森林:集成学习的威力
算法·随机森林·集成学习
(❁´◡`❁)Jimmy(❁´◡`❁)3 小时前
Exgcd 学习笔记
笔记·学习·算法
YYuCChi4 小时前
代码随想录算法训练营第三十七天 | 52.携带研究材料(卡码网)、518.零钱兑换||、377.组合总和IV、57.爬楼梯(卡码网)
算法·动态规划
不能隔夜的咖喱4 小时前
牛客网刷题(2)
java·开发语言·算法
VT.馒头4 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
进击的小头4 小时前
实战案例:51单片机低功耗场景下的简易滤波实现
c语言·单片机·算法·51单片机
咖丨喱6 小时前
IP校验和算法解析与实现
网络·tcp/ip·算法
罗湖老棍子6 小时前
括号配对(信息学奥赛一本通- P1572)
算法·动态规划·区间dp·字符串匹配·区间动态规划