binary-tree-preorder-traversal
1.0.0
Binary Tree Preorder Traversal
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1
#include <iostream>
2
#include <vector>
3
#include <stack>
4
#include <algorithm>
5
6
using namespace
std;
7
11
struct
TreeNode
12
{
13
int
val
;
14
TreeNode
*
left
;
15
TreeNode
*
right
;
16
TreeNode
() :
val
(0),
left
(nullptr),
right
(nullptr) {}
17
TreeNode
(
int
x) :
val
(x),
left
(nullptr),
right
(nullptr) {}
18
TreeNode
(
int
x,
TreeNode
*
left
,
TreeNode
*
right
) :
val
(x),
left
(
left
),
right
(
right
) {}
19
};
20
21
class
Solution
22
{
23
public
:
27
void
set_value
(
TreeNode
* node, vector<int>& array)
28
{
29
array.push_back(node->
val
);
30
if
(node->
left
== NULL && node->
right
== NULL)
31
return
;
32
if
(node->
left
)
33
set_value
(node->
left
, array);
34
if
(node->
right
)
35
set_value
(node->
right
, array);
36
}
37
38
vector<int>
preorderTraversal
(
TreeNode
* root)
39
{
40
vector<int> answer = {};
41
// if (root) // recursive
42
// set_value(root, answer);
43
if
(root)
// iterative
44
{
45
stack<TreeNode*> node_stack;
46
node_stack.push(root);
47
while
(!node_stack.empty())
48
{
49
TreeNode
* current = node_stack.top();
50
node_stack.pop();
51
answer.push_back(current->
val
);
52
if
(current->
right
)
53
node_stack.push(current->
right
);
54
if
(current->
left
)
55
node_stack.push(current->
left
);
56
}
57
}
58
return
answer;
59
}
60
};
61
62
void
delete_tree
(
TreeNode
* root)
63
{
64
if
(root ==
nullptr
)
65
return
;
66
delete_tree
(root->
left
);
67
delete_tree
(root->
right
);
68
delete
root;
69
}
70
71
int
main
()
72
{
73
TreeNode
* root =
new
TreeNode
(1, NULL,
new
TreeNode
(2,
new
TreeNode
(3, NULL, NULL), NULL));
74
Solution
sol;
75
vector<int> preorder = sol.
preorderTraversal
(root);
76
for
(
int
el: preorder)
77
cout << el <<
", "
;
78
cout << endl;
79
delete_tree
(root);
80
return
0;
81
}
Solution
Definition
main.cpp:22
Solution::preorderTraversal
vector< int > preorderTraversal(TreeNode *root)
Definition
main.cpp:38
Solution::set_value
void set_value(TreeNode *node, vector< int > &array)
Recursive function to push node values into array.
Definition
main.cpp:27
delete_tree
void delete_tree(TreeNode *root)
Definition
main.cpp:62
main
int main()
Definition
main.cpp:71
TreeNode
Definition for a binary tree node.
Definition
main.cpp:12
TreeNode::val
int val
Definition
main.cpp:13
TreeNode::left
TreeNode * left
Definition
main.cpp:14
TreeNode::TreeNode
TreeNode(int x, TreeNode *left, TreeNode *right)
Definition
main.cpp:18
TreeNode::right
TreeNode * right
Definition
main.cpp:15
TreeNode::TreeNode
TreeNode(int x)
Definition
main.cpp:17
TreeNode::TreeNode
TreeNode()
Definition
main.cpp:16
main.cpp
Generated by
1.9.8