使用递归思想遍历二叉树

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

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

深度优先遍历有以下三种

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

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

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

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

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

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
}
相关推荐
papership5 分钟前
入门级-数据结构-2、简单树:二叉树的遍历(前序、中序、后序)
数据结构·算法
WWW65266 分钟前
代码随想录 打卡第五十四天
数据结构·c++·算法
happymaker06266 分钟前
LeetCodeHot100——15.三数之和
数据结构·算法
墨白曦煜8 分钟前
算法实战笔记:空间换时间的黑魔法——单调栈全景解析(十一)
java·笔记·算法
大模型最新论文10 分钟前
小红书提出 RedKnot:分头处理 kv 缓存,延时降低 60%效果还提升
算法
随意起个昵称15 分钟前
线性dp-LIS题目6(友好城市,二分优化)
算法·动态规划
数据科学小丫21 分钟前
算法:随机森林算法
算法·随机森林·机器学习
Samson Bruce28 分钟前
【初高中数学】
线性代数·数学·算法·机器学习
redaijufeng29 分钟前
我在C++中深入理解了继承,收获颇丰
java·c++·算法
Ricky055329 分钟前
DEIM :采用改进匹配算法实现快速收敛的DETR(中国25年3月研究)
人工智能·算法·目标跟踪