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

易思网站管理系统深圳网站建设专家

易思网站管理系统,深圳网站建设专家,网页制作手机版,网络营销运营策划题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1:输入:root [1,2,2,3,4,4,3] 输出:true 示例 2:输入:root [1,2,2,null,3,null,3] 输出:false 提示: 树中节点数…

题目描述

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

示例 1:
在这里插入图片描述

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

示例 2:
在这里插入图片描述

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

提示:
树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100

进阶:你可以运用递归和迭代两种方法解决这个问题吗?

思考一:递归

核心是定义「镜像检查函数」,递归验证左右子树的对应节点是否满足镜像条件,本质是深度优先遍历(DFS)

算法过程

  1. 边界处理:若树为空(题目提示节点数≥1,可省略),直接返回true;否则调用check函数,传入根节点的左、右子树(从根的左右子树开始验证镜像)。
  2. 镜像检查函数(check(p, q))
    • 终止条件1:若pq均为null(对应位置均无节点),返回true(符合镜像);
    • 终止条件2:若pq中一个为null、一个非null(对应位置节点缺失),返回false(不符合镜像);
    • 值判断:若p.val !== q.val(对应位置节点值不同),返回false
    • 递归验证:递归检查p的左子树与q的右子树(镜像位置1)、p的右子树与q的左子树(镜像位置2),两者均为true才返回true
  • 时间复杂度 O(n)O(n)O(n)、空间复杂度 O(h)O(h)O(h)(h为树高)。

代码

/*** Definition for a binary tree node.* function TreeNode(val, left, right) {*     this.val = (val===undefined ? 0 : val)*     this.left = (left===undefined ? null : left)*     this.right = (right===undefined ? null : right)* }*/
/*** @param {TreeNode} root* @return {boolean}*/
var isSymmetric = function(root) {return check(root.left, root.right);
};function check(p, q) {if (!p && !q) return true;if ((!p && q) || (p && !q)) return false;if (p.val !== q.val) return false;return check(p.left, q.right) && check(p.right, q.left);
}

思考二:迭代实现(BFS)

核心是用队列存储每一层的节点,通过“相向双指针”验证当前层是否对称,再按“镜像顺序”(右子节点先入队、左子节点后入队)存储下一层节点,本质是广度优先遍历(BFS)

算法过程

  1. 初始化队列:若树为空(题目节点数≥1,可省略)返回true;否则将根节点的左、右子树入队(从根的左右子树开始验证)。
  2. 层序遍历与对称验证
    • 当前层验证:定义双指针l=0(层首)、r=队列长度-1(层尾),相向移动检查对应节点:
      • 若两者一个为null、一个非null,返回false
      • 若均非null但值不同,返回false
    • 存储下一层节点:弹出当前层所有节点,若节点非null,按“右子节点→左子节点”的顺序入队(保证下一层验证时,对应位置仍是镜像节点);
  3. 循环终止:若所有层均验证通过,队列空时返回true
  • 时间复杂度 O(n)O(n)O(n)、空间复杂度 O(n)O(n)O(n)(队列存储)。

代码

/*** Definition for a binary tree node.* function TreeNode(val, left, right) {*     this.val = (val===undefined ? 0 : val)*     this.left = (left===undefined ? null : left)*     this.right = (right===undefined ? null : right)* }*/
/*** @param {TreeNode} root* @return {boolean}*/
var isSymmetric = function(root) {let queue = [root.left, root.right];while (queue.length) {let tmp = [];let l = 0, r = queue.length-1;while (l < r) {if (!queue[l] || !queue[r]) {if (queue[l] || queue[r]) {return false;}} else if (queue[l].val !== queue[r].val) {return false;}l++;r--;}while (queue.length) {let p = queue.pop();if (p) {tmp.push(p.right);tmp.push(p.left);}}queue = tmp;}return true;
};
http://www.dtcms.com/a/594414.html

相关文章:

  • (Arxiv-2025)KALEIDO:开源的多主体参考视频生成模型
  • 天津的网站建设公司哪家好土巴兔装修平台电话
  • 【02】深入理解Harris角点检测:从原理推导到实战实现
  • 防城港建设局网站类似游侠客网站建设
  • wordpress 仿站教程东圃手机网站建设电话
  • 3网站建设k大原画培训班官网
  • Spark的persist和cache
  • 28V直流电源简要技术方案
  • 门户网站建设管理总则wordpress linux 下载
  • Web开发核心概念集合
  • 建设施工合同百度权重优化软件
  • Day58 | Java IO模块概览
  • 新闻联播(2025年11月10日总第二期)
  • 学校后勤网站建设方案wordpress 优惠卷
  • 合肥义城建设集团有限公司网站四川省住房城乡建设厅网站
  • 青岛网站制作seo建设网站需要服务器
  • 企业级 ERP 安全隐患全景:接口未鉴权、默认配置与远程执行的系统性剖析
  • 做视频的素材网站阿里云 域名申请
  • 自己建设网站容易吗哪个网站做图片外链
  • 分布式专题——50 电商项目仿京东商品搜索服务实战
  • 第三方应用软件提权之symantic pcanywhere提权
  • 科普:LLM领域中的“样本(sample)”、“指令(instruction)”和“提示词(prompt)”
  • 宁波网站运营优化系统推广营销方案
  • 【WIP】大模型运维中GPU机器介绍
  • 在家没事做建什么网站好joomla 网站建设教程
  • explorer.exe源代码分析之热键的注册和处理
  • 免费做网站通栏广告做企业网站哪家好
  • 后端开发CRUD实现
  • 4.忘记密码页测试用例
  • 怎么建设个网站做网站用啥软件