使用递归思想遍历二叉树

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

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

深度优先遍历有以下三种

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

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

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

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

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

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
}
相关推荐
汀、人工智能4 小时前
[特殊字符] 第21课:最长有效括号
数据结构·算法·数据库架构·图论·bfs·最长有效括号
Boop_wu4 小时前
[Java 算法] 字符串
linux·运维·服务器·数据结构·算法·leetcode
故事和你914 小时前
洛谷-算法1-2-排序2
开发语言·数据结构·c++·算法·动态规划·图论
Fcy6485 小时前
算法基础详解(三)前缀和与差分算法
算法·前缀和·差分
kvo7f2JTy5 小时前
基于机器学习算法的web入侵检测系统设计与实现
前端·算法·机器学习
List<String> error_P5 小时前
蓝桥杯最后几天冲刺:暴力大法(一)
算法·职场和发展·蓝桥杯
流云鹤7 小时前
Codeforces Round 1090 (Div. 4)
c++·算法
wljy17 小时前
第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(个人见解,已完结)
c语言·c++·算法·蓝桥杯·stl
清空mega8 小时前
C++中关于数学的一些语法回忆(2)
开发语言·c++·算法
香蕉鼠片8 小时前
数据结构八股(一)
数据结构·算法