Find the sum of all left leaves in a given binary tree.
Example:
3 / \ 9 20 / \ 15 7 There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.
--------------------------------------------------------------------------------------------------------
题意
找到所有左叶子节点的值之和
思路
递归求解,当节点的左孩子不为空,并且左孩子的左右孩子皆为空,则返回该节点的左孩子的值。
否则,继续递归其他节点。
代码
public class Solution {
public int sumOfLeftLeaves(TreeNode root) {
int result = countLeftLeaves(root);
return result;
}
public int countLeftLeaves(TreeNode root){
if(root == null) return 0;
//当节点的左孩子不为空,并且左孩子的左右孩子皆为空,则返回该节点值,并继续递归其他节点
if(root.left !=null && root.left.left == null && root.left.right == null){
//root.left.val返回该左叶子节点的值,然后继续递归右孩子 countLeftLeaves(root.right)
return root.left.val + countLeftLeaves(root.right);
}
else{
//继续递归左孩子节点以及右孩子节点
return countLeftLeaves(root.left) + countLeftLeaves(root.right);
}
}
}