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

LeeCode打卡第二十四天

LeeCode打卡第二十四天

第一题:对称二叉树(LeeCode第101题):

给你一个二叉树的根节点 root , 检查它是否轴对称。


/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public boolean isSymmetric(TreeNode root) {if(root == null || (root.left == null)) return true;return isMirror(root.left, root.right);}public boolean isMirror(TreeNode left, TreeNode right){if(left == null && right == null) return true;if(left == null || right == null) return false;if(left.val != right.val) return false;return isMirror(left.left, right.right) && isMirror(left.right, right.left);}
}

第二题:二叉树的直径(LeeCode第543题):

给你一棵二叉树的根节点,返回该树的 直径 。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它们之间边数表示。


主要思想:递归

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {private int ans;public int diameterOfBinaryTree(TreeNode root){dfs(root);return ans;}private int dfs(TreeNode node){if(node == null) return -1;int lLen = dfs(node.left) + 1;int rlen = dfs(node.right) + 1;ans = Math.max(ans, lLen + rlen);return Math.max(lLen, rlen);}
}

第三题:二叉树的层序遍历(LeeCode第102题):

给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。


主要思想:利用队列辅助,将前一层的数据存入队列,根据队列的先进先出的特性,可以顺序地将下一层的数据存入,为了区分两层的数据,用一个size变量记录队列的长度。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> res = new ArrayList<>();if(root == null) return res; Queue<TreeNode> queue = new LinkedList<>();queue.add(root);while(!queue.isEmpty()){int size = queue.size();List<Integer> list = new ArrayList<>();for(int i = 0; i < size; i++){TreeNode cur = queue.poll();list.add(cur.val);if(cur.left != null) queue.add(cur.left);if(cur.right != null) queue.add(cur.right);}res.add(list);}return res;}
}
http://www.lryc.cn/news/436735.html

相关文章:

  • 什么是科技与艺术相结合的异形创意圆形(饼/盘)LED显示屏
  • AI大模型知识点大梳理_ai大模型知识学习,零基础入门到精通,收藏这一篇就够了
  • NVG040W语音芯片:为制氧机带来个性化语音提示和报警功能
  • OpenCV结构分析与形状描述符(12)椭圆拟合函数fitEllipseAMS()的使用
  • 安卓显示驱动
  • java重点学习-集合(List)
  • 【PCB测试】最常见的PCB测试方法
  • AtCoder Beginner Contest 370 ABCD题详细题解(C++,Python)
  • 斯坦福研究人员探讨大型语言模型在社交网络生成中的应用及其在政治同质性上的偏见
  • 一招教你找到Facebook广告的最佳发帖时间
  • 【数据库】MySQL-基础篇-多表查询
  • MongoDB事务机制
  • 大模型 LLM(Large Language Models)如今十分火爆,对于初入此领域的新人小白来说,应该如何入门 LLM 呢?是否有值得推荐的入门教程呢?
  • Python实现模糊逻辑算法
  • MATLAB、FPGA、STM32中调用FFT计算频率、幅值及相位差
  • 基于SSM的医院药品库存系统的设计与实现---附源码76620
  • Jupyter管理内核命令
  • 简单分享-获取.txt文件内数据 文件内数据逗号分隔 分隔符 C语言
  • 从0开始手把手带你入门Vue3
  • C# USB通信技术(通过LibUsbDotNet库)
  • 常用Java API
  • 使用opencv优化图片(画面变清晰)
  • Java 回顾方法的定义
  • 网络安全产品认证证书大全(持续更新...)
  • win10 安装多个版本的python
  • 【ORACLE】数据备份
  • [Golang] goroutine
  • 【前端】JavaScript高级教程:函数高级——执行上下文与执行上下文栈
  • 【阻抗管传递函数法】频域声压,即复声压是指什么
  • Python青少年简明教程:类和对象入门