###### tags: `Stack`, `Tree`, `Depth-First Search`, `Binary Tree`
# LeetCode 144.Binary Tree Preorder Traversal
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$
---
### Idea:
>先把右邊的印完再印左邊的就可以了。
### Solution:
Python:
```python=
# 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 preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
ans = []
def dfs(node):
if not node:
return
ans.append(node.val)
dfs(node.left)
dfs(node.right)
dfs(root)
return ans
```
C++:
```cpp=
```