# 144_Binary_Tree_Preorder_Traversal
###### tags: `leetcode`
## Problem Statement
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
## Solution
- Since the question is about how to construct the traversal of the tree, the key point is to understand how the traversal goes.
- The preordered traversal can be divided as a consecutive questions.
- The value of the path is added first, and then add in other elements left first then left.
- The empty one shoud be kicked out.
```cpp=
vector<int> ret;
if (root) {
vector<TreeNode *> s;
s.push_back(root);
while (s.size()) {
TreeNode * node = s.back();
s.pop_back();
ret.push_back(node->val);
if (node->right)
s.push_back(node->right);
if (node->left)
s.push_back(node->left);
}
}
return ret;
```