maximum-level-sum-of-a-binary-tree
1.0.0
Maximum Level Sum of a Binary Tree
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1
#include <iostream>
2
#include <queue>
3
4
using namespace
std;
5
9
struct
TreeNode
10
{
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
int
maxLevelSum
(
TreeNode
* root)
23
{
24
if
(!root)
25
return
0;
26
27
queue<pair<TreeNode*, int>> node_queue;
// int represents node's level starting from 1
28
node_queue.push({root, 1});
29
30
int
maximal_sum = root->
val
;
31
int
sum_level = 1;
32
33
int
current_sum = 0;
34
int
current_level_sum = 1;
35
36
while
(!node_queue.empty())
37
{
38
TreeNode
* current = node_queue.front().first;
39
int
level = node_queue.front().second;
40
41
if
(level != current_level_sum)
42
{
43
if
(current_sum > maximal_sum)
44
{
45
maximal_sum = current_sum;
46
sum_level = current_level_sum;
47
}
48
current_level_sum = level;
49
current_sum = current->
val
;
50
}
51
else
// level == current_level_sum
52
current_sum += current->
val
;
53
54
node_queue.pop();
55
if
(current->
left
)
56
node_queue.push({current->
left
, level + 1});
57
if
(current->
right
)
58
node_queue.push({current->
right
, level + 1});
59
}
60
if
(current_sum > maximal_sum)
61
{
62
maximal_sum = current_sum;
63
sum_level = current_level_sum;
64
}
65
66
return
sum_level;
67
}
68
};
69
70
void
delete_tree
(
TreeNode
* root)
71
{
72
if
(root ==
nullptr
)
73
return
;
74
delete_tree
(root->
left
);
75
delete_tree
(root->
right
);
76
delete
root;
77
}
78
79
int
main
()
80
{
81
TreeNode
* root =
new
TreeNode
(1,
new
TreeNode
(7,
new
TreeNode
(7),
new
TreeNode
(-8)),
new
TreeNode
(0));
82
Solution
sol;
83
cout <<
"output: "
<< sol.
maxLevelSum
(root) << endl;
84
delete_tree
(root);
85
return
0;
86
}
Solution
Definition
main.cpp:20
Solution::maxLevelSum
int maxLevelSum(TreeNode *root)
Definition
main.cpp:22
delete_tree
void delete_tree(TreeNode *root)
Definition
main.cpp:70
main
int main()
Definition
main.cpp:79
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