题目简介:
给你一棵二叉树的根节点 root
,请你返回 层数最深的叶子节点的和 。
示例 1:
1 2
| 输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8] 输出:15
|
示例 2:
1 2
| 输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5] 输出:19
|
提示:
- 树中节点数目在范围
[1, 10^4]
之间。
1 <= Node.val <= 100
思路:
常规的广度优先搜索进行层序遍历即可,将最后一层的结点值相加返回。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
class Solution { public: int deepestLeavesSum(TreeNode* root) {
queue<TreeNode*> qu;
qu.push(root);
while(!qu.empty()){
int now_sum = 0;
int now_size = qu.size(); for(int i = 0; i < now_size; i++){
auto node = qu.front(); now_sum += node -> val;
if(node -> left) qu.push(node -> left); if(node -> right) qu.push(node -> right);
qu.pop(); }
if(qu.empty()) return now_sum; }
return root -> val; } };
|