此博客链接:https://www.cnblogs.com/ping2yingshi/p/13499752.html
左叶子之和
题目链接:https://leetcode-cn.com/problems/sum-of-left-leaves/
计算给定二叉树的所有左叶子之和。
示例:
3
/
9 20
/
15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
题解:
思路:层次遍历,如果左孩子叶子节点不为空则加上左孩子的数值。
注意:题目要求是只求和左孩子节点,不是左子树的节点都求和,所以在判断时,是要判断左叶子节点的父亲节点,判断条件是,父亲节点的左孩子存在,并且左还是是一个叶子节点,才把左孩子节点加入到结果中。
代码:
class Solution { public int sumOfLeftLeaves(TreeNode root) { if(root==null) return 0; Queue <TreeNode> queue=new LinkedList(); int sum=0; queue.add(root); while(!queue.isEmpty()) { TreeNode node=queue.poll(); if(node.left!=null&&(node.left.left==null&&node.left.right==null)) sum+=node.left.val; if(node.left!=null) { queue.add(node.left); } if(node.right!=null) { queue.add(node.right); } } return sum; } }