左子夜之和

递归:判断当前节点是否为左叶子,如果是则将它加上,求该节点的其余节点的左叶子节点
递归DFS(深度优先搜索)
public int sumOfLeftLeaves1(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 sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right) + res;
}
BFS(广度优先搜索)
public int sumOfLeftLeaves(TreeNode root) {
if(root==null) return 0;
Queue<TreeNode> queue= new ArrayDeque<>();
queue.add(root);
int sum = 0;
while (!queue.isEmpty()){
int size = queue.size();
for(int i=0;i<size;i++){
TreeNode temp = queue.poll();
if(temp.left!=null){
if(temp.left.left==null&&temp.left.right==null) sum=sum+temp.left.val;
queue.add(temp.left);
}
if(temp.right!=null){
queue.add(temp.right);
}
}
}
return sum;
}