news 2026/7/1 4:54:36

剑指offer-58、对称二叉树 _

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
剑指offer-58、对称二叉树 _

请实现⼀个函数,⽤来判断⼀棵⼆叉树是不是对称的。注意,如果⼀个⼆叉树同此⼆叉树的镜像是同样
的,定义其为对称的。

例如:下⾯这棵⼆叉树是对称的

下⾯这个就不是对称的:

示例1

输⼊:{8,6,6,5,7,7,5}
返回值:true

示例2:

输⼊:{8,6,9,5,7,7,5}
返回值:false

思路及解答

递归

递归,先判断根节点是否为空,不为空则判断左右⼦树是不是对称。

如果左右⼦树都为空,则返回 true ,如果有⼀个为空,则返回 false ,如果两个都不为空的时候,除了对⽐左右两个节点的值,还需要递归,对⽐左⼦树的左⼦树和右⼦树的右⼦树是否相等,左⼦树的右⼦树和右⼦树的左⼦树是否相等。

java

public class Solution { public boolean jude(TreeNode left, TreeNode right) { // 如果左右两个都为空,则对称 if (left == null && right == null) { return true; } else if (left == null || right == null) { // 如果左右两个有⼀个为空,那么就不对称 return false; } // 都不为空的情况,需要判断两个的值,是不是相等 if (left.val != right.val) { return false; } else { // 递归判断,左⼦树的左⼦树和右⼦树的右⼦树,左⼦树的右⼦树和右⼦树的左⼦树 return jude(left.left, right.right) && jude(left.right, right.left); } } public boolean isSymmetrical(TreeNode pRoot) { // 判断根节点是否为空,如果不为空则判断左右⼦树 return pRoot==null || jude(pRoot.left, pRoot.right); } }
  • 时间复杂度:O(n)
  • 空间复杂度:O(n),最坏情况下,⼆叉树退化为链表

迭代

是借助两个队列,按照层次,⼀个是按照从左到右添加元素,另外⼀个队列
是按照从右到左添加元素,挨个取出来,进⾏对⽐,不等则说明不对称,如果相等,则再把其左右⼦树
分别按照不同的顺序添加到队列中。代码如下

java

public class Solution { /** * 迭代法 * 使用双端队列,相当于两个栈 */ public boolean isSymmetric2(TreeNode root) { Deque<TreeNode> deque = new LinkedList<>(); deque.offerFirst(root.left); deque.offerLast(root.right); while (!deque.isEmpty()) { TreeNode leftNode = deque.pollFirst(); TreeNode rightNode = deque.pollLast(); if (leftNode == null && rightNode == null) { continue; } if (leftNode == null || rightNode == null || leftNode.val != rightNode.val) { return false; } deque.offerFirst(leftNode.left); deque.offerFirst(leftNode.right); deque.offerLast(rightNode.right); deque.offerLast(rightNode.left); } return true; } /** * 迭代法 * 使用普通队列 */ public boolean isSymmetric3(TreeNode root) { Queue<TreeNode> deque = new LinkedList<>(); deque.offer(root.left); deque.offer(root.right); while (!deque.isEmpty()) { TreeNode leftNode = deque.poll(); TreeNode rightNode = deque.poll(); if (leftNode == null && rightNode == null) { continue; } if (leftNode == null || rightNode == null || leftNode.val != rightNode.val) { return false; } // 这里顺序与使用Deque不同 deque.offer(leftNode.left); deque.offer(rightNode.right); deque.offer(leftNode.right); deque.offer(rightNode.left); } return true;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 4:50:45

N_m3u8DL-RE技术深度解析:现代流媒体下载架构实现

N_m3u8DL-RE技术深度解析&#xff1a;现代流媒体下载架构实现 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE 在…

作者头像 李华
网站建设 2026/7/1 4:50:22

基于YOLO的目标检测论文高效改进策略:从注意力机制到工程实践

导师放养&#xff0c;课题方向是目标检测&#xff0c;想用YOLO水一篇论文毕业&#xff0c;这可能是很多研究生和本科生的真实困境。不是不想做科研&#xff0c;而是时间紧、任务重&#xff0c;导师又给不了具体指导&#xff0c;自己对着YOLO的代码和论文不知从何下手。这篇文章…

作者头像 李华
网站建设 2026/7/1 4:47:23

单身证明公证书需要什么材料?单身证明公证书在哪里办?

准备出国登记结婚、海外置业、办理移民签证&#xff0c;或是国内银行贷款、异地房产过户时&#xff0c;都会被要求提交单身证明公证书。很多人接触这项业务&#xff0c;一头雾水&#xff0c;要么带错材料来回跑腿&#xff0c;要么跑错办理地点白白浪费时间。单身证明公证书需要…

作者头像 李华
网站建设 2026/7/1 4:42:07

低查重AI教材编写秘籍:探秘实用AI工具,轻松搞定20万字教材!

谁没有在教材编写时感到迷茫呢&#xff1f;面对空白的文件&#xff0c;苦思冥想半个小时却仍然无从下手——到底是先解释概念还是先提供实例呢&#xff1f;章节应该依照逻辑顺序还是课时安排&#xff1f;即使反复修改的大纲&#xff0c;时常也会发现不合教学大纲&#xff0c;或…

作者头像 李华
网站建设 2026/7/1 4:39:04

2026年GEO生成式引擎优化公司行业前排梯队权威实力排行

摘要&#xff1a;随着AI搜索渗透率持续攀升&#xff0c;GEO&#xff08;生成式引擎优化&#xff09;已从边缘概念演变为企业营销基础设施的核心议题。本文梳理2026年国内GEO生成式引擎优化公司的行业前排梯队格局&#xff0c;重点解析各类服务商的能力结构与定位差异&#xff0…

作者头像 李华