/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */class Solution { public int sumOfLeftLeaves(TreeNode root) { //终止条件 if(root == null) return 0; //记录结果 int mid = 0; int leftSum = sumOfLeftLeaves(root.left); int rightSum = sumOfLeftLeaves(root.right); //单层递归逻辑 找到左叶子 if(root.left!=null && root.left.left == null && root.left.right==null){ mid = root.left.val; } return leftSum + rightSum + mid; }}
// 层序遍历迭代法class Solution { public int sumOfLeftLeaves(TreeNode root) { int sum = 0; if (root == null) return 0; Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); while (!queue.isEmpty()) { int size = queue.size(); while (size -- > 0) { TreeNode node = queue.poll(); if (node.left != null) { // 左节点不为空 queue.offer(node.left); if (node.left.left == null && node.left.right == null){ // 左叶子节点 sum += node.left.val; } } if (node.right != null) queue.offer(node.right); } } return sum; }}