144. Binary Tree Preorder Traversal

Easy
Given the root of a binary tree, return the preorder traversal of its nodes' values.
Example 1:
​
​
Input: root = [1,null,2,3]
Output:
[1,2,3]
Example 2:
Input: root = []
Output:
[]
Example 3:
Input: root = [1]
Output:
[1]
Constraints:
  • The number of nodes in the tree is in the range [0, 100].
  • -100 <= Node.val <= 100
Follow up: Recursive solution is trivial, could you do it iteratively?

解題

/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func preorderTraversal(root *TreeNode) []int {
ans := make([]int, 0)
if root==nil { return ans }
stack := make([]*TreeNode, 0)
stack = append(stack, root)
for len(stack)>0 {
node := stack[len(stack)-1]
stack = stack[:len(stack)-1]
ans = append(ans, node.Val)
if node.Right!= nil {
stack = append(stack, node.Right)
}
if node.Left!= nil {
stack = append(stack, node.Left)
}
}
return ans
}
​