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
}

Last updated