当前位置: 首页 > news >正文

【力扣题解】P404-左叶子之和-Java题解

花无缺

👨‍💻博客主页:@花无缺
欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
本文由 花无缺 原创

收录于专栏 【力扣题解】


文章目录

  • 【力扣题解】P404-左叶子之和-Java题解
    • 🌏题目描述
    • 💡题解
    • 🌏总结


【力扣题解】P404-左叶子之和-Java题解

P404.左叶子之和

🌏题目描述

给定二叉树的根节点 root ,返回所有左叶子之和。

示例 1:

在这里插入图片描述

输入: root = [3,9,20,null,null,15,7] 
输出: 24 
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

示例 2:

输入: root = [1]
输出: 0

提示:

  • 节点数在 [1, 1000] 范围内
  • -1000 <= Node.val <= 1000

💡题解

深度优先搜索

public int sumOfLeftLeaves(TreeNode root) {return root == null ? 0 : dfs(root);
}
// 深度优先搜索
public static int dfs(TreeNode node) {int res = 0;// 递归搜索左子树if (node.left != null) {// 如果当前左子树是叶子节点就累加节点值// 如果不是叶子节点就继续递归遍历该节点res += isLeafNode(node.left) ? node.left.val : dfs(node.left);}// 递归搜索右子树// 如果当前右子树不是叶子节点就递归遍历右子树if (node.right != null && !isLeafNode(node.right)) {res += dfs(node.right);}return res;
}
// 判断节点是否是叶子节点
// 如果当前节点的左右子树都为空, 那么该节点就是叶子节点
public static boolean isLeafNode(TreeNode node) {return node.left == null && node.right == null;
}

广度优先搜索

public int sumOfLeftLeaves(TreeNode root) {// 空树if (root == null) {return 0;}int res = 0;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {int len = queue.size();while (len-- > 0) {TreeNode node = queue.poll();// 左子树不为空if (node.left != null) {// 左子树是叶子节点, 则累加节点值if (isLeafNode(node.left)) {res += node.left.val;//     不是叶子节点, 将节点加入队列} else {queue.offer(node.left);}}// 右子树不空if (node.right != null) {// 右子树不是叶子节点, 将节点加入队列if (!isLeafNode(node.right)) {queue.offer(node.right);}}}}return res;
}

时间复杂度:均为O(n),树的所有节点都要遍历一次,节点数为 n。

🌏总结

这个题的解题思路:遍历 + 判断。

  • 遍历:遍历二叉树的所有节点
  • 判断:判断当前节点是否是左子节点,以及是否是叶子节点

只要一个节点满足判断中的两个条件,那么我们就可以将当前节点的节点值累加起来,如果当前节点是右子节点或者不是叶子节点,那么我们就继续递归的遍历它,就可以得到最终的答案。

作者:花无缺(huawuque404.com)


🌸欢迎关注我的博客:花无缺-每一个不曾起舞的日子都是对生命的辜负~
🍻一起进步-刷题专栏:【力扣题解】
🥇往期精彩好文:
📢【CSS选择器全解指南】
📢【HTML万字详解】
你们的点赞👍 收藏⭐ 留言📝 关注✅
是我持续创作,输出优质内容的最大动力!
谢谢!

http://www.lryc.cn/news/269841.html

相关文章:

  • elasticsearch 索引数据多了怎么办,如何调优,部署
  • Spring Cloud Gateway之Predicate断言详解
  • JavaScript中的prototype和_proto_的关系是什么
  • 机器学习(二) -- 数据预处理(3)
  • 【数学建模美赛M奖速成系列】Matplotlib绘图技巧(三)
  • 手写Spring与基本原理--简易版
  • EasyNTS端口穿透服务新版本发布 0.8.7 增加隧道流量总数记录,可以知晓设备哪个端口耗费流量了
  • python自动合计各部周销
  • Java内存区域与内存溢出异常
  • 远程网络唤醒家庭主机(openwrt设置)
  • Spring知识02
  • Linux服务器搭建笔记-006:拓展/home目录容量
  • 元宇宙与VR虚拟现实的未来如何?
  • 微服务事务处理:CAP 定理和最终一致性的关系
  • 【Linux操作系统】探秘Linux奥秘:操作系统的入门与实战
  • Copilot概述:AI助手引领编程新纪元
  • 最小覆盖子串(LeetCode 76)
  • Windows Sockets 2 笔记
  • 13章总结
  • (2023,3D NeRF,无图像变分分数蒸馏,单步扩散)SwiftBrush:具有变分分数蒸馏的一步文本到图像扩散模型
  • 【WPF.NET开发】将路由事件标记为已处理和类处理
  • 2023年03月18日_微软office365 copilot相关介绍
  • GBASE南大通用携手宇信科技打造“一表通”全链路解决方案
  • Python 内置高阶函数练习(Leetcode500.键盘行)
  • 【JavaWeb】day01-HTMLCSS
  • 【工具】windeployqt 在windows + vscode环境下打包
  • 跟着LearnOpenGL学习12--光照贴图
  • DotNet 命令行开发
  • hyperf console 执行
  • 第一篇 设计模式引论 - 探索软件设计的智慧结晶