LetCode 404. Sum of Left Leaves (C++)

来源:互联网 发布:czur scanner软件 编辑:程序博客网 时间:2024/06/06 23:51

Find the sum of all left leaves in a given binary tree.

Example:

    3   / \  9  20    /  \   15   7There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.

思路:深度优先遍历,如果是左叶子节点则与left_sum相加。

/** * 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) {        int left_sum = 0;        dfs(root, left_sum);        return left_sum;    }        int dfs(TreeNode* root, int & left_sum) {        if (!root) return 0;        if (root->left) left_sum += dfs(root->left, left_sum);        if (root->right) dfs(root->right, left_sum);                if(!(root->left) && !(root->right)) return root->val;        return 0;    }};

答案中更加简练的代码:

/** * 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) {        int left_sum = 0;        dfs(root, left_sum);        return left_sum;    }        int dfs(TreeNode* root, int & left_sum) {        if (!root) return 0;        if (root->left) left_sum += dfs(root->left, left_sum);        if (root->right) dfs(root->right, left_sum);                if(!(root->left) && !(root->right)) return root->val;        return 0;    }};


原创粉丝点击