使用递归思想遍历二叉树

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

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

深度优先遍历有以下三种

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

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

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

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

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

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
}
相关推荐
查理零世11 分钟前
【算法】经典博弈论问题——巴什博弈 python
开发语言·python·算法
神探阿航16 分钟前
第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
java·算法·蓝桥杯
皮肤科大白34 分钟前
如何在data.table中处理缺失值
学习·算法·机器学习
不能只会打代码2 小时前
蓝桥杯例题一
算法·蓝桥杯
OKkankan2 小时前
实现二叉树_堆
c语言·数据结构·c++·算法
ExRoc4 小时前
蓝桥杯真题 - 填充 - 题解
c++·算法·蓝桥杯
利刃大大4 小时前
【二叉树的深搜】二叉树剪枝
c++·算法·dfs·剪枝
天乐敲代码6 小时前
JAVASE入门九脚-集合框架ArrayList,LinkedList,HashSet,TreeSet,迭代
java·开发语言·算法
十年一梦实验室7 小时前
【Eigen教程】矩阵、数组和向量类(二)
线性代数·算法·矩阵
Kent_J_Truman7 小时前
【子矩阵——优先队列】
算法