leetcode0404. 左叶子之和-easy
1 题目:左叶子之和
官方标定难度:易
给定二叉树的根节点 root ,返回所有左叶子之和。
示例 1:
输入: root = [3,9,20,null,null,15,7]
输出: 24
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
示例 2:
输入: root = [1]
输出: 0
提示:
节点数在 [1, 1000] 范围内
-1000 <= Node.val <= 1000
2 solution
深度优先搜索,如果叶子节点是左叶子就返回值,否则返回 0,非叶子节点,返回子树的左叶子和。
代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {int f(TreeNode *root, TreeNode *p) {if (!root->left && !root->right) {if (root == p->left) return root->val;return 0;}int s = 0;if (root->left) s = f(root->left, root);if (root->right) s += f(root->right, root);return s;}public:int sumOfLeftLeaves(TreeNode *root) {int s = 0;if (root->left) s = f(root->left, root);if (root->right) s += f(root->right, root);return s;}
};