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

【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.xdnf.cn/news/15659.html

相关文章:

  • Transform的重要方法
  • C++修炼:IO流
  • 关于程序=数据结构+算法这句话最近的一些思考
  • 多目标优化|HKELM混合核极限学习机+NSGAII算法工艺参数优化、工程设计优化,四目标(最大化输出y1、最小化输出y2,y3,y4),Matlab完整源码
  • WAMP允许远程访问
  • 【机器学习【6】】数据理解:数据导入、数据审查与数据可视化方法论
  • Ubuntu中man手册不全解决以及man手册中英文切换方法
  • OpenSearch SQL 查询完整指南
  • STM32-DMA
  • 数字魔方--玩转魔方的助手
  • oracle2kingbase的字段长度问题
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | AutoTextEffect(自动打字机)
  • 尚庭公寓-------图片上传接口
  • 【c++深入系列】:万字详解list(附模拟实现的list源码)
  • 【unitrix】 6.4 类型化数特征(t_number.rs)
  • JavaScript进阶篇——第六章 内置构造函数与内置方法
  • 21、鸿蒙Harmony Next开发:组件导航(Navigation)
  • 主机安全---开源wazuh安装
  • 【Unity】IL2CPP相关理论知识学习
  • Spring MVC中@PathVariable的用法详解
  • AR智能巡检:电力行业数字化转型的“加速器”
  • Java 8新特性 函数式编程实践
  • python基础②-数据结构
  • 第二十一 篇 PDF文档自动化:Python一键合并、分割、水印、提取与加密解密!你的PDF全能管家!
  • 《通信原理》学习笔记——第二章
  • 【前端】Vue3 前端项目实现动态显示当前系统时间
  • 【TVM 教程】FAQ
  • 筑牢网络安全防线:DDoS/CC 攻击全链路防护技术解析
  • Hadoop(三)
  • PyTorch 损失函数详解:从理论到实践