LeetCode 404. 左叶子之和(Sum of Left Leaves)
404. 左叶子之和
404. Sum of Left Leaves
LeetCode404. Sum of Left Leaves
题目描述
计算给定二叉树的所有左叶子之和。
示例:
3/ \9 20/ \15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。
Java 实现
TreeNode 结构
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val = x;}
}
Recursive
class Solution {private int sum = 0;public int sumOfLeftLeaves(TreeNode root) {if (root == null) {return 0;}if (root.left != null && root.left.left == null && root.left.right == null) {sum += root.left.val;}sumOfLeftLeaves(root.left);sumOfLeftLeaves(root.right);return sum;}
}
class Solution {public int sumOfLeftLeaves(TreeNode root) {int count = 0;if (root == null) {return 0;}if (root.left != null) {if (root.left.left == null && root.left.right == null) {count += root.left.val;} else {count += sumOfLeftLeaves(root.left);}}count += sumOfLeftLeaves(root.right);return count;}
}
Iterative
import java.util.Stack;
class Solution {public int sumOfLeftLeaves(TreeNode root) {int count = 0;Stack<TreeNode> stack = new Stack<>();if (root == null) {return 0;}stack.push(root);while (!stack.isEmpty()) {TreeNode node = stack.pop();if (node.left != null) {if (node.left.left == null && node.left.right == null) {count += node.left.val;} else {stack.push(node.left);}}if (node.right != null) {if (node.right.left != null || node.right.right != null) {stack.push(node.right);}}}return count;}
}
主测试类
public class Test {public static void main(String[] args) {Solution tree = new Solution();/* create a tree */TreeNode root = new TreeNode(3);root.left = new TreeNode(9);root.right = new TreeNode(20);root.right.left = new TreeNode(15);root.right.right = new TreeNode(7);System.out.println(tree.sumOfLeftLeaves(root));}
}
运行结果
相似题目
- 求二叉树中叶子节点的个数
参考资料
- https://leetcode.com/problems/sum-of-left-leaves/
- https://leetcode-cn.com/problems/sum-of-left-leaves/
转载于:https://www.cnblogs.com/hglibin/p/10849527.html
LeetCode 404. 左叶子之和(Sum of Left Leaves)相关推荐
- [二叉树|深搜|dfs] leetcode 404 左叶子之和
[二叉树|深搜|dfs] leetcode 404 左叶子之和 1.题目 题目链接 计算给定二叉树的所有左叶子之和. 示例: 3/ \9 20/ \15 7在这个二叉树中,有两个左叶子,分别是 9 和 ...
- LeetCode 404. 左叶子之和(递归)
1. 题目 计算给定二叉树的所有左叶子之和. 示例:3/ \9 20/ \15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 来源:力扣(LeetCode) 链接:https: ...
- LeetCode 404左叶子之和-简单
计算给定二叉树的所有左叶子之和. 示例: 3/ \9 20/ \15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 代码如下: /*** Definition for a b ...
- LeetCode 404. 左叶子之和思考分析
题目 计算给定二叉树的所有左叶子之和. 如果是下面的树,只有一个左叶子结点4 思考分析 由此我们可以得到左叶子结点的定义: cur->left !=NULL && cur-> ...
- LeetCode 404 左叶子之和
力扣 思路: 1.递归 递归出口 找特殊情况: (1) 如果根节点为空,返回0 (2 )如果根节点的左右孩子节点都为空,返回0 (3)如果根节点有左孩子且左孩子的左右孩子都为空,返回root-> ...
- LeetCode 404. 左叶子之和
非递归 public static int sumOfLeftLeaves(TreeNode root) {int sum = 0;if(root==null)return 0;Stack<Tr ...
- Suzy找到实习了吗Day 17 | 二叉树进行中:110. 平衡二叉树,257 二叉树的所有路径,404. 左叶子之和
110. 平衡二叉树 题目 判断一颗二叉树是否是平和二叉树:一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 . 我的错误trial 我通过写了一个函数(后序遍历 ...
- 力扣404. 左叶子之和
404. 左叶子之和 - 力扣(LeetCode) (leetcode-cn.com) class Solution {int ans = 0;public int sumOfLeftLeaves(T ...
- 404. 左叶子之和
题目 404. 左叶子之和 找到左叶子 方法一:递归 判断根节点是否有左子树,用sum_left记录 递归左子树与右子树,找出其中的叶子节点 # Definition for a binary tre ...
最新文章
- 在A*寻路中使用二叉堆
- 社区头条:Spring For All 新版上线了!!!
- vue中页面跳转传值_vue跳转方式(打开新页面)及传参操作示例
- 015. Object event handling debug - Parameter COM_IOITF_DEBUG
- 中国人口较少民族作家研讨会
- 用 JavaScript 操作字符串
- python可以实现操作系统管理_Python并发编程 —— 操作系统基础
- Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例
- 鸿蒙之光一星辰是什么意思,如果说安卓的目标是太阳,那么鸿蒙的目标就是星辰大海...
- 在C#中将集合用作键
- centos overlay 占用很大_盘锦技术好的升降货梯占用空间小
- python和perl的区别_Perl和Python之间有什么区别?Perl与Python的简单比较
- 均分纸牌模型之mxj分礼物
- 关于Excel中的【照相机】功能。(我们通过此功能,可以通过Excel在图片上面画上一些内容后,连同图片和内容一起弄出来)
- ArcGIS Engine中删除要素的几种方法总结
- oracle rownum使用与分页
- 【ER网络?BA网络?WS网络?NW网络?】复杂网络分析+数据集+代码实现
- 关于JeeSite框架Shiro序列化漏洞修复解决方法
- TTL与非门电路的工作原理
- 网页|利用touch实现下拉刷新