题目
计算给定二叉树的所有左叶子之和。
示例:
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);
}