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