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

【Java】【力扣】101.对称二叉树

思路

递归

大问题:对比 左 右 是否对称

参数 左和右

todo 先凑合看

代码

/*** 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) {return isSymmetricLR(root.left,root.right);}//判断左树 和 右数 是否对称public boolean isSymmetricLR(TreeNode left,TreeNode right) {//都为空if (left == null&&right==null) {return true;}//一个空 一个不空else if (left == null&&right!=null){return false;} else if (left != null&&right==null) {return false;}//都不空,以下://1.判左 和右本身是否不同if (left.val != right.val) {return false;}//2.判断左左 和右右是否不同//问题转化成 递归调用,其中 left为左左,right为右右if(!isSymmetricLR(left.left, right.right)){return false;}//3.判断左右 和右左是否不同//问题转化成 递归调用,其中 left为左右,right为右左if(!isSymmetric(left.right, right.left)){return false;}return true;}}

错误思路

得到中序遍历结果 判断是否对称

出问题: todo为什么这个不行

/*** 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) {//得到中序遍历结果 判断是否对称,双指针List<Integer> list = inorderTraversal(root);//定义指针int begin=0;int end=list.size()-1;while (begin<end){if (Objects.equals(list.get(begin), list.get(end))){begin++;end--;}else{return false;}}//退出:等于-相遇 小于-错开//如果推出循坏还是没有 不相等,就是对称序列return true;}//二叉树中序遍历public List<Integer> inorderTraversal(TreeNode root) {if (root==null){return new ArrayList<>();}//初始化 listList list=new ArrayList<Integer>();//左子树//问题转化为:遍历以root.left为根的树,并把结果返回,追加到原来的list上if(root.left!=null) {list.addAll(inorderTraversal(root.left));}//当前list.add(root.val);//右子树if(root.right!=null) {list.addAll(inorderTraversal(root.right));}return list;}}

总结

1. todo “得到中序遍历结果 判断是否对称” 为什么不行,思考想问题 怎么想更多测试用例

今天感悟:刷题 不在量,在每一题吃透 ,相关拓展也吃透,相关题型都理解

http://www.dtcms.com/a/282534.html

相关文章:

  • 数据结构与算法——Leetcode215. 数组中的第K个最大元素
  • 中国1km分辨率逐月平均气温数据集 - matlab按shp批量裁剪
  • Git远程仓库与协作技巧详解
  • 【add vs commit】Git 中的 add 和 commit 之间的区别
  • 秘塔AI搜索的深度研究推出:它的“免费午餐”还能走多远?
  • NULL值处理:索引优化与业务设计实践指南
  • GIT版本回退
  • 堆排序算法详解:原理、实现与C语言代码
  • ubuntu--自启动程序
  • Docker Compose 清理指南:`down` 与 `down -v` 的核心区别与使用场景
  • Jenkins credentials 增加了github credential 但是在Git SCM 凭证中不显示
  • 基于SpringBoot+Uniapp球场预约小程序(腾讯地图API、Echarts图形化分析、二维码识别)
  • 如何用 Charles 中文版抓包工具高效调试 API 并优化网络性能
  • 自适应哈希索引 和 日志缓冲区
  • 结构体(二)
  • XXE漏洞1-XXE 漏洞简介-XML 语法-DTD 讲解-外部实体讲解
  • 【React Native】安装配置 Expo Router
  • HTML基础P1 | HTML基本元素
  • Jmeter中Parallel Controller的配置方法(并发)
  • 小白学HTML,操作HTML文件篇(2)
  • 二进制枚举
  • 基于Canal实现MySQL数据库数据同步
  • 百炼Agent MCP与IoT实战(二):阿里云MQTT Broker配置
  • Unity UGUI 无限循环列表组件
  • 倒立摆系统控制器设计报告
  • PyCharm(入门篇)
  • OpenSearch SQL 查询完整指南
  • Spring Boot 缓存 与 Redis
  • Java-74 深入浅出 RPC Dubbo Admin可视化管理 安装使用 源码编译、Docker启动
  • 【Android】TextView的使用