力扣101---对称二叉树(简单题)

题目描述:

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

示例 1:

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

输入:root = [1,2,2,null,3,null,3]
输出:false

        非递归Java代码:

/*** 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.left==null || root.right==null){//判断根节点左右子树是否都为空return root.left==null && root.right==null;//左右子树都为空,返回true,其中有一个不为空,返回false}TreeNode n1=root.right;TreeNode n2=root.left;List<TreeNode> list1=new LinkedList<>();//根节点的右子树的遍历集合List<TreeNode> list2=new LinkedList<>();//根节点的左子树的遍历集合list1.add(n1);list2.add(n2);while(list1.size()!=0 && list2.size()!=0){//两个集合都不为空TreeNode index1=list1.get(0);//取出列表首部TreeNode index2=list2.get(0);list1.remove(0);list2.remove(0);if(index1.val!=index2.val){return false;}else{if(index1.left!=null && index2.right!=null){//对称判断list1.add(index1.left);list2.add(index2.right);}else if(index1.left!=null || index2.right!=null){return false;}if(index1.right!=null && index2.left!=null){list1.add(index1.right);list2.add(index2.left);}else if(index1.right!=null || index2.left!=null){return false;}}}if(list1.size()!=0 || list2.size()!=0){//结果中有一个集合不为空,说明不对称return false;}else{return true;}}
}

        递归Java代码:

/*** 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.left==null || root.right==null){//判断根节点左右子树是否都为空return root.left==null && root.right==null;//左右子树都为空,返回true,其中有一个不为空,返回false}return isFait(root.right,root.left);}public boolean isFait(TreeNode right,TreeNode left){if(left==null || right==null){//判断根节点左右子树是否都为空return left==null && right==null;//左右子树都为空,返回true,其中有一个不为空,返回false}if(right.val!=left.val){return false;}return isFait(right.right,left.left)&& isFait(right.left,left.right);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/537766.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构:7、队列

一、队列的概念与结构 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out) 入队列&#xff1a;进行插入操作的一端称为队尾 出队列&#xff1a;进行删除操作的一端称为队头…

电脑坏了去维修,第一家报价800,第三家说报废!

这篇文章主要讲的是修理坏掉的电脑。 第一家报价300&#xff0c;第二家报价800&#xff0c;第三家说要报废&#xff01; 相信很多朋友对于修电脑坏了要多少钱有很多困惑&#xff0c;修电脑坏了要多少钱&#xff0c;到底去正规售后服务还是去非品牌店维修一台坏掉的电脑。 今天高…

鸿蒙开发之MPChart图表开发

一、简介 随着移动应用的不断发展,数据可视化成为提高用户体验和数据交流的重要手段之一,因此需要经常使用图表,如折线图、柱形图等。OpenHarmony提供了一个强大而灵活的图表库是实现这一目标的关键。 在 ohpm 中心仓(https://ohpm.openharmony.cn/)中,汇聚了众多开发者…

数据分析可视化神器---streamlit框架,各种图表绘制,布局以及生产综合案例剖析

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

商家转账到零钱转账场景怎么选择

商家转账到零钱是什么&#xff1f; 商家转账到零钱功能整合了企业付款到零钱和批量转账到零钱&#xff0c;支持批量对外转账&#xff0c;操作便捷。如果你的应用场景是单付款&#xff0c;体验感和企业付款到零钱基本没差别。 商家转账到零钱的使用场景有哪些&#xff1f; 商…

BFS(宽度优先搜索)C++(Acwing)

代码&#xff1a; #include <cstring> #include <iostream> #include <algorithm>using namespace std;typedef pair<int, int> PII;const int N 110;int n, m; int g[N][N]; int d[N][N]; PII q[N * N];int bfs() {int hh 0, tt 0;q[0] {0, 0};m…

技术分析丨在伺服应用中为什么大多选择行星减速机?

在伺服应用中&#xff0c;反馈装置扮演着至关重要的角色&#xff0c;它通过对线性或旋转系统的扭矩、位置或速度进行精确控制&#xff0c;确保系统的高效、稳定运行。而在这些系统中&#xff0c;负载惯量与电机惯量之比是一个决定系统性能的关键因素。 当负载惯量较低时&#…

社交媒体的明日之星:揭示Facebook如何成为全球最受欢迎的平台之一

在当今数字时代&#xff0c;社交媒体已经成为人们日常生活中不可或缺的一部分。而在这众多社交媒体平台中&#xff0c;Facebook堪称一颗耀眼的明星&#xff0c;其如何成为全球最受欢迎的平台之一&#xff1f;让我们一起揭开这个谜底。 1. Facebook的创立与发展 Facebook由马克…

jupyter notebook 突然莫名奇妙的白屏

jupyter notebook 突然莫名奇妙的白屏 事件背景&#xff1a; 最近在折腾openai&#xff0c;哎&#xff0c;一言难尽&#xff0c;使用的是conda管理python版本的切换&#xff0c;使用jupyter notebook来运行python程序&#xff0c;其实PyCharm也行&#xff0c;但是&#xff0c;…

ChatGPTPLUS、Poe、Claude介绍,以及如何订阅

我使用了FOmepay的556150卡段升级了ChatGPTPLUS、POE、Claude3 一、ChatGPT Plus 是什么&#xff1f; ChatGPT Plus 是基于 ChatGPT 的月订阅升级方案&#xff0c;它可以提供更快的回应速度、更高的可用性以及优先使用到新功能的权限。 ChatGPT Plus 和原版 ChatGPT 的差异 …

前端性能测试工具 LightHouse (灯塔)使用

Lighthouse是什么&#xff1f; —— 一种工具 Lighthouse 是一个开源的自动化工具&#xff0c;用来测试页面性能。 为什么要用Lighthouse&#xff1f;—— 提升用户体验 Web性能可以直接影响业务指标&#xff0c;例如转化率和用户满意度 分析收集各种应用页面性能指标&#xff…

如何在Windows上控制你的iOS游戏?

Windows用户们&#xff0c;是不是常常羡慕iOS用户能畅享那些画面精美、玩法新颖的手机游戏&#xff1f;&#x1f389;不用再望屏兴叹&#xff0c;今天教你如何跨越系统界限&#xff0c;轻松掌控iOS游戏盛宴&#xff01; 使用AirDroid Cast控制功能&#xff0c;即可让Windows操控…