一【题目类别】
- 二叉树
二【题目难度】
- 简单
三【题目编号】
- 404.左叶子之和
四【题目描述】
- 给定二叉树的根节点 root ,返回所有左叶子之和。
五【题目示例】
-
示例 1:
输入: root = [3,9,20,null,null,15,7]
输出: 24
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 -
示例 2:
输入: root = [1]
输出: 0
六【题目提示】
- 节点数在 [1, 1000] 范围内
- -1000 <= Node.val <= 1000
七【解题思路】
- 这个题思路比较简单,首先想到递归,但是应该怎么进行递归呢?
- 首先我们要求的节点应该是左子树节点
- 其次这个左子树节点还应该是叶子节点
- 基于以上两点进行判断,将其求和返回即可
八【时间频度】
- 时间复杂度: O ( l o g 2 N ) O(log_{2}N) O(log2N),其中 N N N为树的结点个数
- 空间复杂度: O ( l o g 2 N ) O(log_{2}N) O(log2N),其中 N N N为树的结点个数
九【代码实现】
- Java语言版
package Tree;
public class p404_SumOfLeftLeaves {
int val;
p404_SumOfLeftLeaves left;
p404_SumOfLeftLeaves right;
public p404_SumOfLeftLeaves() {
}
public p404_SumOfLeftLeaves(int val) {
this.val = val;
}
public p404_SumOfLeftLeaves(int val, p404_SumOfLeftLeaves left, p404_SumOfLeftLeaves right) {
this.val = val;
this.left = left;
this.right = right;
}
public static void main(String[] args) {
p404_SumOfLeftLeaves root = new p404_SumOfLeftLeaves(3);
p404_SumOfLeftLeaves left = new p404_SumOfLeftLeaves(9);
p404_SumOfLeftLeaves right = new p404_SumOfLeftLeaves(20);
p404_SumOfLeftLeaves right1 = new p404_SumOfLeftLeaves(15);
p404_SumOfLeftLeaves right2 = new p404_SumOfLeftLeaves(7);
root.left = left;
root.right = right;
right.left = right1;
right.right = right2;
int res = sumOfLeftLeaves(root);
System.out.println("res = " + res);
}
public static int sumOfLeftLeaves(p404_SumOfLeftLeaves root) {
if (root == null) {
return 0;
}
int res = 0;
if (root.left != null && root.left.left == null && root.left.right == null) {
res += root.left.val;
}
return res + sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right);
}
}
- C语言版
#include<stdio.h>
struct TreeNode
{
int val;
struct TreeNode *left;
struct TreeNode *right;
};
int sumOfLeftLeaves(struct TreeNode* root)
{
if (root == NULL)
{
return 0;
}
int res = 0;
if (root->left != NULL && root->left->left == NULL && root->left->right == NULL)
{
res += root->left->val;
}
return res + sumOfLeftLeaves(root->left) + sumOfLeftLeaves(root->right);
}
/*主函数省略*/
十【提交结果】
-
Java语言版
-
C语言版