1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79  // @Title: 二叉树的前序遍历 (Binary Tree Preorder Traversal) // @Author: 15816537946@163.com // @Date: 2019-11-25 18:17:16 // @Runtime: 0 ms // @Memory: 2.1 MB /** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ /* func preorderTraversal(root *TreeNode) []int { if root == nil { return nil } res := make([]int,0) 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 } */ func preorderTraversal(root *TreeNode) []int { if root == nil { return nil } res := make([]int, 0) nodes := make([]*TreeNode, 1, 1024) nodes[0] = root for len(nodes) > 0 { node := nodes[0] nodes = nodes[1:] res = append(res, node.Val) if node.Right != nil { nodes = append(nodes, node.Right) } if node.Left != nil { nodes = append(nodes, node.Left) } } return res } /* func preorderTraversal(root *TreeNode) []int { if root == nil { return nil } res := make([]int, 0) nodes := make([]*TreeNode, 1, 1024) nodes[0] = root for len(nodes) > 0 { node := nodes[len(nodes)-1] nodes = nodes[:len(nodes)-1] res = append(res, node.Val) if node.Right != nil { nodes = append(nodes, node.Right) } if node.Left != nil { nodes = append(nodes, node.Left) } } return res } */