LeetCode 404 左叶子之和 HERODING的LeetCode之路

计算给定二叉树的所有左叶子之和。

示例:

3
/ \
9 20
/ \
15 7

在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。

解题思路:
这道题目可以有多种解法,无论是深度优先遍历还是广度优先遍历,都能得到结果,核心就是找到一个点,它存在左节点,且该节点是叶子节点,加上它的值就行,知道遍历所有结束。代码如下:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
    
    
public:
    int sumOfLeftLeaves(TreeNode* root) {
    
    
        if(!root){
    
    
            return 0;
        }
        int sum = 0;
        queue<TreeNode*> q;
        q.push(root);
        while(!q.empty()){
    
    
            int size = q.size();
            for(int i = 0; i < size; i ++){
    
    
                TreeNode* node = q.front();
                q.pop();
                if(node->left != NULL){
    
    
                    if(node->left->left == NULL && node->left->right == NULL){
    
    
                        sum += node->left->val;
                    }else{
    
    
                        q.push(node->left);
                    }
                }
                if(node->right != NULL){
    
    
                    q.push(node->right);
                }
            }
        }
        return sum;
    }
};

猜你喜欢

转载自blog.csdn.net/HERODING23/article/details/108676242