1302. 层数最深叶子节点的和
层序遍历写法
关键点:
1
2int size = qu.size();
for (int i = 0; i < size; i++)完整代码:
要在
while (!qu.empty())
里面再套一层for循环,用于遍历该层节点每次进入while循环时队列中的所有结点即为该层的所有结点,这是取其size,即可进行层序遍历
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24class Solution {
public:
int deepestLeavesSum(TreeNode* root) {
int sum = 0;
queue<TreeNode*> qu;
qu.emplace(root);
while (!qu.empty()) {
sum = 0;
int size = qu.size();
for (int i = 0; i < size; i++) {
TreeNode *node = qu.front();
qu.pop();
sum += node->val;
if (node->left != nullptr) {
qu.emplace(node->left);
}
if (node->right != nullptr) {
qu.emplace(node->right);
}
}
}
return sum;
}
};使用递归(深搜)更快,深搜查找最深的结点,并对其求和即可