二叉树的遍历模版(递归,迭代)
图片来自 leetcode 深度优先遍历(dfs) 前序遍历 中序遍历 后序遍历 广度优先遍历(bfs) type TreeNode struct { Val int Left *TreeNode Right *TreeNode } 深度优先遍历 递归 递归版本,代码比较简单,只需改变 append 数据的位置即可。 前序遍历 func preorderTraversal(root *TreeNode) []int { var ret []int helper(root, &ret) return ret } func helper(root *TreeNode, data *[]int) { if root == nil { return } *data = append(*data, root.Val) helper(root.Left, data) helper(root.Right, data) } 中序遍历 func inorderTraversal(root *TreeNode) []int { var ret []int helper(root, &ret) return ret } func helper(root *TreeNode, data *[]int) { if root == nil { return } helper(root....