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
6using namespace std;
7
12{
13 int val;
16 TreeNode() : val(0), left(nullptr), right(nullptr) {}
17 TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
19};
20
22{
23public:
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
53{
54 if (root == nullptr)
55 return;
56 delete_tree(root->left);
57 delete_tree(root->right);
58 delete root;
59}
60
61int 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}
vector< int > postorderTraversal(TreeNode *root)
Definition main.cpp:24
void delete_tree(TreeNode *root)
Definition main.cpp:52
int main()
Definition main.cpp:61
Definition for a binary tree node.
Definition main.cpp:12
int val
Definition main.cpp:13
TreeNode * left
Definition main.cpp:14
TreeNode(int x, TreeNode *left, TreeNode *right)
Definition main.cpp:18
TreeNode * right
Definition main.cpp:15
TreeNode(int x)
Definition main.cpp:17
TreeNode()
Definition main.cpp:16