binary-tree-level-order-traversal
1.0.0
Binary Tree Level Order Traversal
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1
#include <iostream>
2
#include <vector>
3
#include <queue>
4
5
using namespace
std;
6
10
struct
TreeNode
{
11
int
val
;
12
TreeNode
*
left
;
13
TreeNode
*
right
;
14
TreeNode
() :
val
(0),
left
(nullptr),
right
(nullptr) {}
15
TreeNode
(
int
x) :
val
(x),
left
(nullptr),
right
(nullptr) {}
16
TreeNode
(
int
x,
TreeNode
*
left
,
TreeNode
*
right
) :
val
(x),
left
(
left
),
right
(
right
) {}
17
};
18
19
class
Solution
20
{
21
public
:
22
vector<vector<int>>
levelOrder
(
TreeNode
* root)
23
{
24
vector<vector<int>> answer = {};
25
if
(root)
26
{
27
queue<pair<TreeNode*, int>> node_queue;
// the first is the node, the second is a level
28
node_queue.push({root, 0});
29
while
(!node_queue.empty())
30
{
31
TreeNode
* current = node_queue.front().first;
32
int
level = node_queue.front().second;
33
node_queue.pop();
34
35
if
((
int
)answer.size() > level)
36
answer[level].push_back(current->
val
);
37
else
38
answer.push_back(vector<int>{current->
val
});
39
40
level++;
41
if
(current->
left
)
42
node_queue.push({current->
left
, level});
43
if
(current->
right
)
44
node_queue.push({current->
right
, level});
45
}
46
}
47
return
answer;
48
}
49
};
50
51
void
delete_tree
(
TreeNode
* root)
52
{
53
if
(root ==
nullptr
)
54
return
;
55
delete_tree
(root->
left
);
56
delete_tree
(root->
right
);
57
delete
root;
58
}
59
60
int
main
()
61
{
62
TreeNode
* root =
new
TreeNode
(3,
new
TreeNode
(9),
new
TreeNode
(20,
new
TreeNode
(15),
new
TreeNode
(7)));
63
Solution
sol;
64
vector<vector<int>> answer = sol.
levelOrder
(root);
65
for
(vector<int>& array: answer)
66
{
67
for
(
int
el: array)
68
cout << el <<
" "
;
69
cout << endl;
70
}
71
delete_tree
(root);
72
return
0;
73
}
Solution
Definition
main.cpp:20
Solution::levelOrder
vector< vector< int > > levelOrder(TreeNode *root)
Definition
main.cpp:22
delete_tree
void delete_tree(TreeNode *root)
Definition
main.cpp:51
main
int main()
Definition
main.cpp:60
TreeNode
Definition for a binary tree node.
Definition
main.cpp:10
TreeNode::val
int val
Definition
main.cpp:11
TreeNode::left
TreeNode * left
Definition
main.cpp:12
TreeNode::TreeNode
TreeNode(int x, TreeNode *left, TreeNode *right)
Definition
main.cpp:16
TreeNode::right
TreeNode * right
Definition
main.cpp:13
TreeNode::TreeNode
TreeNode(int x)
Definition
main.cpp:15
TreeNode::TreeNode
TreeNode()
Definition
main.cpp:14
main.cpp
Generated by
1.9.8