> For the complete documentation index, see [llms.txt](https://jaywin.gitbook.io/leetcode/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jaywin.gitbook.io/leetcode/solutions/0144-binary-tree-preorder-traversal.md).

# 0144. Binary Tree Preorder Traversal

<https://leetcode.com/problems/binary-tree-preorder-traversal>

## Description

Given the `root` of a binary tree, return *the preorder traversal of its nodes' values*.

**Example 1:**

![](https://assets.leetcode.com/uploads/2020/09/15/inorder_1.jpg)

```
**Input:** root = [1,null,2,3]
**Output:** [1,2,3]
```

**Example 2:**

```
**Input:** root = []
**Output:** []
```

**Example 3:**

```
**Input:** root = [1]
**Output:** [1]
```

**Example 4:**

![](https://assets.leetcode.com/uploads/2020/09/15/inorder_5.jpg)

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

**Example 5:**

![](https://assets.leetcode.com/uploads/2020/09/15/inorder_4.jpg)

```
**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?

## ac

```java
```
