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

【力扣热题100】[Java版] 刷题笔记-101. 对称二叉树

题目: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 void leftTravel(TreeNode root, List<Integer> res) {if (root == null) {res.add(null);return;}res.add(root.val);leftTravel(root.left, res);leftTravel(root.right, res);}public void rightTravel(TreeNode root, List<Integer> res) {if (root == null) {res.add(null);return;}res.add(root.val);rightTravel(root.right, res);rightTravel(root.left, res);}public boolean isSymmetric(TreeNode root) {if (root == null) {return true;}if (root.left == null && root.right == null) {return true;}// 左子树 根 左 右TreeNode left = root.left;List<Integer> resL = new ArrayList();leftTravel(left, resL);// 右子树 根 右 左TreeNode right = root.right;List<Integer> resR = new ArrayList();rightTravel(right, resR);// 对比 是否一致return resL.equals(resR);}
}

这个还可以简化,直接递归对比结果,代码如下

/*** 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 compare(TreeNode left, TreeNode right) {if (left == null && right == null) {return true;}if (left == null || right == null) {return false;}return left.val == right.val && compare(left.left, right.right) &&         compare(left.right, right.left);}public boolean isSymmetric(TreeNode root) {if (root == null) {return true;}return compare(root.left, root.right);}
}


http://www.mrgr.cn/news/62945.html

相关文章:

  • 上市公司企业数字金融认知数据集(2001-2023年)
  • 净水前置需要安装吗?
  • 安全运营 -- 监控linux命令history
  • Linux相关概念和易错知识点(18)(重定向、语言级缓冲区)
  • 安宝特案例 | AR技术在院外心脏骤停急救中的革命性应用
  • 开源项目-投票管理系统
  • 嵌入式——了解stm32
  • 新加坡托管服务器VS香港托管服务器:AI时代的选择策略
  • Android 音量调节流程分析
  • 2024年网鼎杯青龙组逆向2题wp
  • 量化交易backtrader实践(三)_指标与策略篇(6)_股票软件指标参考A
  • C++集合运算函数总结-
  • DCS系统
  • LVGL盒子模型的概念
  • 五、鸿蒙开发-组件状态管理
  • OpenCSG携手书生·浦语:InternLM2.5-20B-Chat 正式上线,共建AI未来新生态
  • 哪里能找到海量短视频素材和制作教程?
  • 高效记录编程笔记
  • Spring IOC
  • 使用UDP实现发送和接收
  • 数据结构,问题 C: 后缀表达式
  • 《别了,浔川社团官方;你好,浔川社团官方联合会》
  • 很抽象但是好用的方法打败Vue框架第一天-Vue项目构建原神前端界面(Vue+js+html+css+jquery)
  • 搭建WIN32的开发环境
  • 高并发设计模式之ForkJoin模式
  • 客户的奇葩要求—在CAN网络的基础上加入了CAN_FD的节点