前序遍历
func preorderTraversal(root *TreeNode) (vals []int) {
var preorder func(*TreeNode)
preorder = func(node *TreeNode) {
if node == nil {
return
}
vals = append(vals, node.Val)
preorder(node.Left)
preorder(node.Right)
}
preorder(root)
return
}
中序遍历
func inorderTraversal(root *TreeNode) (res []int) {
var inorder func(node *TreeNode)
inorder = func(node *TreeNode) {
if node ==nil {
return
}
inorder(node.Left)
res = append(res, node.Val)
inorder(node.Right)
}
inorder(root)
return
}
后序遍历
func postorderTraversal(root *TreeNode) (ans []int) {
var f func(root *TreeNode)
f = func(root *TreeNode) {
if root == nil {
return
}
f(root.Left)
f(root.Right)
ans = append(ans, root.Val)
}
f(root)
return
}
迭代法不想看,略过了