当前位置: 首页 > 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.lryc.cn/news/589683.html

相关文章:

  • Spring之核心容器(IoC,DI,基本操作)详解
  • 中国旅行社协会在京召开“文旅人工智能应用研讨会”,助力文旅创新发展
  • python —— 真二
  • 广州邮科光纤交换机的应用:网络世界中的幕后核心
  • 【Qt开发】Qt的背景介绍(二)-> 搭建Qt开发环境
  • SAP中批量处理角色(复制、修改、上载,生成)
  • Apache IoTDB(1):时序数据库介绍与单机版安装部署指南
  • Clip微调系列:《CLIP-Adapter: Better Vision-Language Models with FeatureAdapters》
  • 【Qt+error】error: use of undeclared identifier ‘MainWindow
  • QT技巧之快速搭建串口收发平台
  • C++ -- STL-- List
  • 上公网-从内网到公网
  • C++ 中两个类之间的通信方式
  • Linux 文件系统实现层详解:原理、结构与驱动衔接
  • C++回顾 Day7
  • 企业级实时流处理:Kafka Streams完整解决方案
  • 基于Springboot+UniApp+Ai实现模拟面试小工具五:权限校验参数校验及日志功能实现
  • 从抽象函数到可计算导数 ——SymPy 中占位、求导、代入的完整闭环
  • OpenAI GPT-4o技术详解:全能多模态模型的架构革新与生态影响
  • AJAX 开发中的注意点
  • cursor使用mcp连接mysql数据库,url方式
  • Python 程序设计讲义(1):PyCharm 安装教程
  • 网络基础10 业务访问控制--ACL与包过滤
  • HarmonyOS-ArkUI: Web组件加载流程1
  • 隐私计算四大主流开源框架:从学术研究到工业落地,附PySyft实战Demo
  • 【PTA数据结构 | C语言版】根据层序序列重构二叉树
  • 【PTA数据结构 | C语言版】前序遍历二叉树
  • 【UniApp】Vue2 scss 预编译器默认已由 node-sass 更换为 dart-sass
  • 快速了解 HTTPS
  • 使用JS编写动态表格