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

leetcode刷题日记——对称二叉树

[ 题目描述 ]:
在这里插入图片描述
[ 思路 ]:

  • 递归,递归遍历树左右两边相对应的两个子节点,判断他们是否相同,相同则对称,不相同则不对称
  • 运行如下
    在这里插入图片描述
bool isSame(struct TreeNode* p,struct TreeNode* q){if(!p && !q) return true;if(!p || !q || p->val!=q->val) return false;return isSame(p->left,q->right) && isSame(p->right,q->left); 
}bool isSymmetric(struct TreeNode* root) {return isSame(root->left,root->right);
}

[ 官方题解 ]:

  • 一、递归,基本同上
  • 二、迭代,引入一个队列,这是把递归程序改写成迭代程序的常用方法。初始化时我们把根节点入队两次。每次提取两个结点并比较它们的值(队列中每两个连续的结点应该是相等的,而且它们的子树互为镜像),然后将两个结点的左右子结点按相反的顺序插入队列中。当队列为空时,或者我们检测到树不对称(即从队列中取出两个不相等的连续结点)时,该算法结束
  • C++代码如下
class Solution {
public:bool check(TreeNode *u, TreeNode *v) {queue <TreeNode*> q;q.push(u); q.push(v);while (!q.empty()) {u = q.front(); q.pop();v = q.front(); q.pop();if (!u && !v) continue;if ((!u || !v) || (u->val != v->val)) return false;q.push(u->left); q.push(v->right);q.push(u->right); q.push(v->left);}return true;}bool isSymmetric(TreeNode* root) {return check(root, root);}
};

相关文章:

  • 使用腾讯云高性能空间部署YOLOv11训练模型
  • C/C++ 知识点:引用临时对象
  • JavaScript篇:前端模块化进化史:从CommonJS到ES6的奇幻之旅
  • Python Django 的 ORM 编程思想及使用步骤
  • 通过vcpkg交叉编译grpc:构建Arm64平台的Docker化开发环境
  • ALTER AGGREGATE使用场景
  • JSON-to-Excel插件 v2.1.2 新增功能批量转换功能
  • 2025毕业论文与答辩资料精选汇总
  • kotlin Flow的技术范畴
  • 【高德开放平台-注册安全分析报告】
  • 解释:神经网络
  • Python实现VTK - 自学笔记(3):三维数据处理与高级可视化
  • 常用算法/机理模型演示平台搭建(一)
  • Apollo10.0学习——planning模块(8)之scenario、Stage插件详解
  • 2025年PMP 学习二十一 14章 项目立项管理
  • JWT : JSON Web Token
  • 中科固源Wisdom平台发现NASA核心飞行控制系统(cFS)通信协议健壮性缺陷!
  • python使用jsonpath-ng库操作json数据
  • 超级管理员租户资源初始化与授权管理设计方案
  • vue项目启动报错
  • 国家话剧院上海演出季7月重启,《大宅门》等5部大戏来沪
  • 中国预警机雷达有多强?可数百公里外看清足球轨迹
  • 新冠阳性率升高,专家:新冠变异株致病力没太多变化
  • 聚焦智能浪潮下的创业突围,“青年草坪创新创业湃对”走进北杨人工智能小镇
  • 外媒:哈马斯一名高级指挥官尸体被发现,系辛瓦尔弟弟
  • 15年全免费,内蒙古准格尔旗实现幼儿园到高中0学费