题目:
计算给定二叉树的所有左叶子之和。
示例:
3 / \ 9 20 / \ 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
解题思路:
遍历二叉树,求和左叶子节点的值。
注意只有一个根节点的时候根节点的值不算。
代码实现:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public int sumOfLeftLeaves(TreeNode root) { if (root == null) return 0; int sum = 0; Stack<TreeNode> stack = new Stack<TreeNode>(); TreeNode p = root; if (p.left == null && p.right == null) p = null; while (p != null) { if (p.right != null) stack.push(p.right); p = p.left; if (p != null && p.left == null && p.right == null) sum += p.val; if (p == null && !stack.isEmpty()) { p = stack.pop(); } } return sum; } }