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

力扣爆刷第159天之TOP100五连刷61-65(翻转单词、对称二叉树、遍历求和)

力扣爆刷第159天之TOP100五连刷61-65(翻转单词、对称二叉树、遍历求和)

文章目录

      • 力扣爆刷第159天之TOP100五连刷61-65(翻转单词、对称二叉树、遍历求和)
      • 一、151. 反转字符串中的单词
      • 二、129. 求根节点到叶节点数字之和
      • 三、104. 二叉树的最大深度
      • 四、101. 对称二叉树
      • 五、144. 二叉树的前序遍历

一、151. 反转字符串中的单词

题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/description/
思路:很经典的题目,翻转字符串中的单词,只需要把所有单词都翻转,然后再整体翻转就可以。具体的实现方式有很多,比如用stringbuilder拼接然后翻转的,也有用集合收集之后翻转的,都可以。

class Solution {public String reverseWords(String s) {StringBuilder sb = new StringBuilder();StringBuilder temp = new StringBuilder();for(char c : s.toCharArray()) {if(c != ' ') temp.append(c);else if(temp.length() > 0) {sb.append(temp.reverse()).append(' ');temp = new StringBuilder();}}if(temp.length() != 0) sb.append(temp.reverse());if(sb.charAt(sb.length()-1)  == ' ') sb.deleteCharAt(sb.length()-1);return sb.reverse().toString();}}

二、129. 求根节点到叶节点数字之和

题目链接:https://leetcode.cn/problems/sum-root-to-leaf-numbers/description/
思路:本题怎么都可以做,求的是从根节点到叶子节点的每一条通路都是一个数,这个数是从根节点拼接到叶子节点的。所以可以使用前序遍历,但是又要注意回溯返回,有回溯的思想在里面。其他的就没有了。

class Solution {int sum = 0;public int sumNumbers(TreeNode root) {backTracking(root, 0);return sum;}void backTracking(TreeNode root, int temp) {if(root == null) return;temp = root.val + temp * 10;if(root.left == null && root.right == null) {sum += temp;}backTracking(root.left, temp);backTracking(root.right, temp);}}

三、104. 二叉树的最大深度

题目链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/
思路:求最大深度,没啥好说的经典后序遍历,返回左右子树的最大深度作为最大深度。

class Solution {public int maxDepth(TreeNode root) {if(root == null) return 0;int left = maxDepth(root.left);int right = maxDepth(root.right);return Math.max(left, right) + 1;}
}

四、101. 对称二叉树

题目链接:https://leetcode.cn/problems/symmetric-tree/description/
思路:求二叉树是否对称,直接把数竖着分成两半来看,然后前序遍历比较即可。

class Solution {public boolean isSymmetric(TreeNode root) {return traverse(root.left, root.right);}boolean traverse(TreeNode node1, TreeNode node2) {if(node1 == null && node2 == null) return true;if(node1 == null|| node2 == null) return false;if(node1.val != node2.val) return false;return traverse(node1.left, node2.right) && traverse(node1.right, node2.left);}}

五、144. 二叉树的前序遍历

题目链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/description/
思路:这个就是前序遍历收集,没啥可说的。

class Solution {List<Integer> list = new ArrayList<>();public List<Integer> preorderTraversal(TreeNode root) {if(root == null) return list;list.add(root.val);preorderTraversal(root.left);preorderTraversal(root.right);return list;}
}
http://www.lryc.cn/news/392969.html

相关文章:

  • (七)[重制]C++命名空间与标准模板库(STL)
  • Elasticsearch:Runtime fields - 运行时字段(一)
  • 03:C语言运算符
  • JAVA每日作业day7.4
  • WordPress网站违法关键词字过滤插件下载text-filter
  • ros1仿真导航机器人 navigation
  • Python制作动态颜色变换:颜色渐变动效
  • Python 异步编程介绍与代码示例
  • 堆叠的作用
  • ubuntu 如何查看某一个网卡的ip地址
  • 跨界客户服务:拓展服务边界,创造更多价值
  • linux驱动编程 - kfifo先进先出队列
  • JS 四舍五入使用整理
  • 上万组风电,光伏,用户负荷数据分享
  • 在物联网快速发展的趋势下,Java 怎样优化对低功耗、资源受限的边缘设备的支持,保障物联网应用的稳定运行?
  • java-HashSet 源码分析 1
  • K8S 部署 EFK
  • AI Earth应用—— 在线使用sentinel数据VV和VH波段进行水体提取分析(昆明抚仙湖、滇池为例)
  • 基于Hadoop平台的电信客服数据的处理与分析③项目开发:搭建基于Hadoop的全分布式集群---任务9:HBase的安装和部署
  • go语言day09 通道 协程的死锁
  • 黑马的ES课程中的不足
  • STM32 中断编程入门
  • 使用maven搭建一个SpingBoot项目
  • 使用 HTTPS 已成为网站的标配了
  • 前后端分离Nginx
  • 【简单讲解下Tauri】
  • mac上挂载linux目录
  • Linux系统的服务——以Centos7为例
  • Numpy矩阵运算
  • Spring容器Bean之XML配置方式