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

力扣HOT100之二叉树:101. 对称二叉树


这道题我本来想着挑战一下自己,尝试着用迭代的方法来做,然后就是用层序遍历,将每一层的元素收集到一个临时的一维向量中,然后再逐层判断每一层是否都是轴对称的,一旦发现某一层不是轴对称的,就直接return false,当所有的层都遍历结束后,都没有出现return false的情况,就说明每一层都是轴对称的,此时直接return true即可。注意,再判断每一层是否为轴对称时,千万不能用栈来匹配(类似于括号匹配的思路),因为下面的情况用栈会判定为轴对称,但是实际上是非轴对称的。(当时被这个测试样例折磨到红温)

此外,当前层的下一层如果至少有一个非空节点,那么下一层的空节点也必须加入,否则判定也会出问题。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:bool isSymmetric(TreeNode* root) {//用迭代来解决这个问题queue<TreeNode*> My_Queue;stack<TreeNode*> My_Stack;My_Queue.push(root);while(!My_Queue.empty()){int size = My_Queue.size();vector<TreeNode*> temp;while(size > 0){TreeNode* node = My_Queue.front();My_Queue.pop();size--;if(node){My_Queue.push(node -> left);temp.emplace_back(node -> left);My_Queue.push(node -> right);temp.emplace_back(node -> right);} }for(int left = 0, right = temp.size() - 1; left < right;){if((!temp[left] && !temp[right]) || ((temp[left] && temp[right]) && (temp[left] -> val == temp[right] -> val))){left++;right--;}else return false;}}return true;}
};
http://www.xdnf.cn/news/5516.html

相关文章:

  • 洛谷 P1955 [NOI2015] 程序自动分析
  • hdfs客户端操作-文件上传
  • LegoGPT,卡内基梅隆大学推出的乐高积木设计模型
  • 视觉-语言-动作模型:概念、进展、应用与挑战(下)
  • day18-数据结构引言
  • 【Python】UV:单脚本依赖管理
  • DVWA在线靶场-SQL注入部分
  • The Graph:区块链数据索引的技术架构与创新实践
  • maitrix-org/Voila-chat:端到端音频聊天模型
  • 如何判断IP是否被平台标记
  • 深入解读tcpdump:原理、数据结构与操作手册
  • YAFFS2 的 `yaffs_obj` 数据结构详解
  • JAVA EE_网络原理_数据链路层
  • R语言实战第5章(1)
  • 软考错题(四)
  • 小结:Syslog
  • 运用数组和矩阵对数据进行存取和运算——NumPy模块 之五
  • vue3+three 搭建平面上滚动旋转的几何体
  • 【深度学习】计算机视觉(18)——从应用到设计
  • 数据库笔记(1)
  • DeepWiki: Github的百科全书
  • vue实现与后台springboot传递数据【传值/取值 Axios 】
  • 基于大模型的甲状腺结节诊疗全流程预测与方案研究报告
  • C++ 状态模式详解
  • (网络)应用层协议-HTTPS
  • .NET 8 API 实现websocket,并在前端angular实现调用
  • WSL 安装 Debian 12 后,Linux 如何安装 redis ?
  • 如何翻译英文文献
  • 后端开发面试高频50个问题,简单解答
  • 企业对数据集成工具的需求及 ETL 工具工作原理详解