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
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:
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
63{
64 if (root == nullptr)
65 return;
66 delete_tree(root->left);
67 delete_tree(root->right);
68 delete root;
69}
70
71int 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}
vector< int > preorderTraversal(TreeNode *root)
Definition main.cpp:38
void set_value(TreeNode *node, vector< int > &array)
Recursive function to push node values into array.
Definition main.cpp:27
void delete_tree(TreeNode *root)
Definition main.cpp:62
int main()
Definition main.cpp:71
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