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.
题意:给定一颗二叉树,返回该二叉树的左叶子结点的和
思路:层次遍历,然后判断每个结点是否包含左叶子结点,如果存在左叶子结点则加进sum,代码如下:
public int sumOfLeftLeaves(TreeNode root) { if(root == null) return 0; int sum = 0; Queue<TreeNode> q = new LinkedList<>(); q.offer(root); while(!q.isEmpty()){ TreeNode t = q.poll(); sum += isLeftLeaf(t); if(t.left != null){ q.offer(t.left); } if(t.right != null){ q.offer(t.right); } } return sum; } public int isLeftLeaf(TreeNode t){ if(t.left != null){ if(t.left.left == null && t.left.right == null) return t.left.val; } return 0; }