Given the root of a binary tree, return the preorder traversal of its nodes' values.
Preorder traversal visits nodes in the order: root, then left subtree, then right subtree.
This is a depth-first traversal where we process the current node before exploring its children.
[0, 100]-100 <= Node.val <= 100root = [1,null,2,3][1,2,3]root = [1,2,3,4,5,null,8,null,null,6,7,9][1,2,4,5,6,7,3,8,9]root = [][]root = [1][1]