1 #include<iostream>
2 #include<vector>
3 #include<stack>
4 using namespace std;
5
6 class Solution
7 {
8 public:
9 vector<int> preorderTraversal(TreeNode *root)
10 {
11 vector<int> result;
12 const TreeNode *p;
13 stack<const TreeNode *> s;
14
15 p = root;
16 if(p != nullptr) s.push(p);
17 while(!s.empty())
18 {
19 p = s.top();
20 s.pop();
21 result.push_back(p->val);
22
23 if(p->right != nullptr) s.push(p->right);
24 if(p->left != nullptr) s.push(p->left); //stack 后进先出 所以先判断right
25 }
26 return result;
27 }
28 }