404. Sum of Left Leaves*

来源:互联网 发布:centos 7 32位下载 编辑:程序博客网 时间:2024/04/30 18:46

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.
My code:

非递归方法:

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public int sumOfLeftLeaves(TreeNode root) {        Stack<TreeNode> stack = new Stack<>();        int sum =0;        if (root==null) return sum;        TreeNode cur = root;        while(cur!=null||!stack.isEmpty()){            if(cur.right!=null) stack.push(cur.right);            if (cur.left!=null){                if (cur.left.left==null && cur.left.right ==null){                    sum += cur.left.val;                }                cur = cur.left;            }            else if (!stack.isEmpty()) cur = stack.pop();            else cur = null;        }        return sum;                    }}

递归方法:

public class Solution {    public int sumOfLeftLeaves(TreeNode root) {        if (root==null) return 0;        int sum =0;        if (root.left!=null){            if(root.left.left==null&& root.left.right==null) sum+=root.left.val;            else sum += sumOfLeftLeaves(root.left);        }        sum+=sumOfLeftLeaves(root.right);        return sum;            }}

总结:非递归方法自己做的,递归方法不常用反而生疏了,看了答案。说明一个问题,多练习总是好的。




0 0
原创粉丝点击