leetcode 404. Sum of Left Leaves

来源:互联网 发布:手机全屏时钟软件 编辑:程序博客网 时间:2024/06/01 19:29

Find the sum of all left leaves in a given binary tree.

Example:

    3   / \  9  20    /  \   15   7There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.
注意题意是左子叶,是叶子!!

package leetcode;public class Sum_of_Left_Leaves_404 {int sum=0;public int sumOfLeftLeaves(TreeNode root) {if(root==null){return 0;}DFS(root,false);return sum;}public void DFS(TreeNode node,Boolean isLeft){if(node.left==null&&node.right==null){if(isLeft==true){sum+=node.val;}return;}if(node.left!=null){DFS(node.left,true);}if(node.right!=null){DFS(node.right,false);}}public static void main(String[] args) {// TODO Auto-generated method stubSum_of_Left_Leaves_404 s=new Sum_of_Left_Leaves_404();TreeNode root=new TreeNode(1);root.left=new TreeNode(2);root.right=new TreeNode(3);root.left.left=new TreeNode(4);root.left.right=new TreeNode(5);System.out.println(s.sumOfLeftLeaves(root));}}
我用的DFS递归,大神用的和我差不多,还有用BFS,对每个treenode进行遍历,也是可以的。

public class Solution {    public int sumOfLeftLeaves(TreeNode root) {        if(root == null || root.left == null && root.right == null) return 0;                int res = 0;        Queue<TreeNode> queue = new LinkedList<>();        queue.offer(root);                while(!queue.isEmpty()) {            TreeNode curr = queue.poll();            if(curr.left != null && curr.left.left == null && curr.left.right == null) res += curr.left.val;            if(curr.left != null) queue.offer(curr.left);            if(curr.right != null) queue.offer(curr.right);        }        return res;    }}

原创粉丝点击