282 字
1 分钟
二叉树的三种遍历

二叉树#

144. 二叉树的前序遍历

94. 二叉树的中序遍历

145. 二叉树的后序遍历

给你二叉树的根节点 root ,返回它节点值的 前/中/后序 遍历。


示例 1:

img
输入:root = [1,null,2,3]
输出:

示例 2:

img
输入:root = [1,2,3,4,5,null,8,null,null,6,7,9]

示例 3:

输入:root = []
输出:[]

示例 4:

输入:root = [1]
输出:[1]

前序遍历

/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func preorderTraversal(root *TreeNode) []int {
res := []int{}
var dfs func(*TreeNode)
dfs = func(node *TreeNode){
if node == nil {
return
}
res = append(res, node.Val)
dfs(node.Left)
dfs(node.Right)
}
dfs(root)
return res
}

中序遍历

/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func inorderTraversal(root *TreeNode) []int {
res := []int{}
var dfs func(*TreeNode)
dfs = func(node *TreeNode) {
if node == nil {
return
}
dfs(node.Left)
res = append(res, node.Val)
dfs(node.Right)
}
dfs(root)
return res
}

后序遍历

/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func postorderTraversal(root *TreeNode) []int {
res := []int{}
var dfs func(*TreeNode)
dfs = func(node *TreeNode){
if node == nil {
return
}
dfs(node.Left)
dfs(node.Right)
res = append(res, node.Val)
}
dfs(root)
return res
}
二叉树的三种遍历
https://sheep44044.github.io/posts/算法/二叉树/二叉树的三种遍历/
作者
sheep44044
发布于
2026-03-14
许可协议
CC BY-NC-SA 4.0