File tree 1 file changed +57
-0
lines changed
1 file changed +57
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ #include < vector>
3
+ #include < stack>
4
+
5
+ using namespace std ;
6
+
7
+ struct TreeNode {
8
+ int val;
9
+ TreeNode *left;
10
+ TreeNode *right;
11
+ TreeNode (int x) : val(x), left(NULL ), right(NULL ) {}
12
+ };
13
+
14
+ class Solution {
15
+ public:
16
+ vector<int > preorderTraversal (TreeNode *root) {
17
+ vector<int > ret;
18
+ if (!root) return ret;
19
+
20
+ stack<TreeNode *> s;
21
+ s.push (root);
22
+
23
+ while (!s.empty ()) {
24
+ TreeNode *p = s.top ();
25
+ s.pop ();
26
+
27
+ if (p) {
28
+ ret.push_back (p->val );
29
+ s.push (p->right );
30
+ s.push (p->left );
31
+ }
32
+ }
33
+ return ret;
34
+ }
35
+ };
36
+
37
+ int main () {
38
+ TreeNode *root = new TreeNode (4 );
39
+ TreeNode *p = root;
40
+
41
+ p->left = new TreeNode (2 );
42
+ p->right = new TreeNode (5 );
43
+ p = p->left ;
44
+ p->left = new TreeNode (1 );
45
+ p->right = new TreeNode (3 );
46
+
47
+ Solution s;
48
+ vector<int > ret = s.preorderTraversal (root);
49
+
50
+ // should be 42135
51
+ for (unsigned int i = 0 ; i < ret.size (); i++) {
52
+ cout << ret[i];
53
+ }
54
+ cout << endl;
55
+
56
+ return 0 ;
57
+ }
You can’t perform that action at this time.
0 commit comments