代码:
数的结构
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
先序遍历:
// 二叉树的先序遍历
func preorderTraversal(root *TreeNode) []int {
var ans []int
var dfs func(*TreeNode)
dfs = func(t *TreeNode) {
if t == nil {
return
}
ans = append(ans, t.Val)
dfs(t.Left)
dfs(t.Right)
}
dfs(root)
return ans
}
中序遍历:
// 二叉树的中序遍历
func inorderTraversal(root *TreeNode) []int {
var ans []int
var dfs func(*TreeNode)
dfs = func(t *TreeNode) {
if t == nil {
return
}
dfs(t.Left)
ans = append(ans, t.Val)
dfs(t.Right)
}
dfs(root)
return ans
}
后续遍历:
// 二叉树的后序遍历
func postorderTraversal(root *TreeNode) []int {
var ans []int
var dfs func(*TreeNode)
dfs = func(t *TreeNode) {
if t == nil {
return
}
dfs(t.Left)
dfs(t.Right)
ans = append(ans, t.Val)
}
dfs(root)
return ans
}
分别对应力扣题库
94. 二叉树的中序遍历
144. 二叉树的前序遍历
145. 二叉树的后序遍历