binary-tree-postorder-traversal
1.0.0
Binary Tree Postorder 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
:
24
vector<int>
postorderTraversal
(
TreeNode
* root)
25
{
26
vector<int> answer = {};
27
if
(root)
28
{
29
stack<TreeNode*> node_stack;
30
stack<TreeNode*> output_stack;
31
node_stack.push(root);
32
while
(!node_stack.empty())
33
{
34
TreeNode
* current = node_stack.top();
35
node_stack.pop();
36
output_stack.push(current);
37
if
(current->
left
)
38
node_stack.push(current->
left
);
39
if
(current->
right
)
40
node_stack.push(current->
right
);
41
}
42
while
(!output_stack.empty())
43
{
44
answer.push_back(output_stack.top()->val);
45
output_stack.pop();
46
}
47
}
48
return
answer;
49
}
50
};
51
52
void
delete_tree
(
TreeNode
* root)
53
{
54
if
(root ==
nullptr
)
55
return
;
56
delete_tree
(root->
left
);
57
delete_tree
(root->
right
);
58
delete
root;
59
}
60
61
int
main
()
62
{
63
TreeNode
* root =
new
TreeNode
(1,
new
TreeNode
(2,
new
TreeNode
(4),
new
TreeNode
(5,
new
TreeNode
(6),
new
TreeNode
(7))),
new
TreeNode
(3, NULL,
new
TreeNode
(8,
new
TreeNode
(9), NULL)));
64
Solution
sol;
65
vector<int> preorder = sol.
postorderTraversal
(root);
66
for
(
int
el: preorder)
67
cout << el <<
", "
;
68
cout << endl;
69
delete_tree
(root);
70
return
0;
71
}
Solution
Definition
main.cpp:22
Solution::postorderTraversal
vector< int > postorderTraversal(TreeNode *root)
Definition
main.cpp:24
delete_tree
void delete_tree(TreeNode *root)
Definition
main.cpp:52
main
int main()
Definition
main.cpp:61
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