144. Binary Tree Preorder Traversal

QUESTION:

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]

Example 4:

Input: root = [1,2]
Output: [1,2]

Example 5:

Input: root = [1,null,2]
Output: [1,2]

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?

EXPLANATION:

前序遍历, 也没有什么需要说的. 只是需要注意swift的extension的应用. 具体可以看官方文档

SOLUTION:

extension TreeNode {
    func preTraversal(value: (Int) -> Void) {
        value(val)
        left?.preTraversal(value: value)
        right?.preTraversal(value: value)
    }
}
class Solution {
    
    func preorderTraversal(_ root: TreeNode?) -> [Int] {
        var values: [Int] = []
        root?.preTraversal { result in
            values.append(result)
        }
        return values
    }
}