Skip to content

Commit b266507

Browse files
committed
"Binary Tree Preorder Traversal"
1 parent 27b2727 commit b266507

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

src/144.cpp

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
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+
}

0 commit comments

Comments
 (0)