原题地址:https://leetcode-cn.com/problems/sum-of-left-leaves/
题目描述:
计算给定二叉树的所有左叶子之和。
示例:

代码:
递归:前序遍历
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int sum;
public int sumOfLeftLeaves(TreeNode root) {
sum = 0;
preOrder(root);
return sum;
}
public void preOrder(TreeNode root)
{
if(root == null) return;
TreeNode node = root.left;
if(node != null && node.left == null && node.right == null) sum += node.val;
preOrder(root.left);
preOrder(root.right);
}
}
迭代:
/**
* 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) {
Stack<TreeNode> s = new Stack<>();
s.push(root);
int sum = 0;
if(root == null) return sum;
while(!s.isEmpty())
{
TreeNode node = s.pop();
if(node.right != null) s.push(node.right);
if(node.left != null)
{
s.push(node.left);
if(node.left.left == null && node.left.right == null)
sum += node.left.val;
}
}
return sum;
}
}
本文介绍了一种计算给定二叉树所有左叶子节点之和的方法,通过递归前序遍历和迭代两种方式实现。递归方法通过前序遍历找到左叶子节点并累加其值,而迭代方法使用栈进行节点存储和处理,当遇到左叶子节点时进行累加。
606

被折叠的 条评论
为什么被折叠?



