题目
计算给定二叉树的所有左叶子之和。
示例:
3
/ \
9 20
/ \
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
分析
首先一个节点的左右子树都为空,那么这个节点是叶子节点,另外如果我们需要遍历的是叶子节点父节点,这样才能决定是否是左叶子.
代码
public int sumOfLeftLeaves(TreeNode root) {
//如果找出所有左叶子,首先叶子节点左右子树都为null,然后如果一个叶子节点为左叶子,那么它必然是某个节点的左叶子。
if(root == null){
return 0;
}
sumOfLeft(root);
return sum;
}
int sum = 0;
private void sumOfLeft(TreeNode node){
if(node == null){
return;
}
if(node.left!=null){
TreeNode leftNode = node.left;
if(leftNode.left==null && leftNode.right == null){
sum =sum+leftNode.val;
}
}
sumOfLeft(node.left);
sumOfLeft(node.right);
}
本文介绍了一种算法,用于计算给定二叉树中所有左叶子节点的值之和。通过递归遍历二叉树,当遇到左叶子节点时(即该节点的左右子树都为空),将其值累加到总和中。示例代码展示了如何实现这一算法。
1058

被折叠的 条评论
为什么被折叠?



