Binary tree preorder traversal

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def __init__(self):
        self.res = []
    def traversal(self, root) -> TreeNode:
        if not root:
            return None
        self.res.append(root.val)
        root.left = self.traversal(root.left)
        root.right = self.traversal(root.right)

        return root

    def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        self.traversal(root)
        return self.res

Binary Tree Preorder Traversal

Difficulty: 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?