1302. 层数最深叶子节点的和

题解链接

  • 层序遍历写法

    关键点:

    1
    2
    	int 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
    24
    class 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;
    }
    };
  • 使用递归(深搜)更快,深搜查找最深的结点,并对其求和即可