代码:
数的结构
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 }
分别对应力扣题库