已解决
LeetCode算法递归类——剑指 Offer 28. 对称的二叉树
来自网友在路上 164864提问 提问时间:2023-09-19 10:52:47阅读次数: 64
最佳答案 问答题库648位专家为你答疑解惑
目录
剑指 Offer 28. 对称的二叉树
题解:
代码:
运行结果:
剑指 Offer 28. 对称的二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
2 2
\ \
3 3示例 1:
输入:root = [1,2,2,3,4,4,3] 输出:true示例 2:
输入:root = [1,2,2,null,3,null,3] 输出:false限制:
0 <= 节点个数 <= 1000
题解:
- 首先判断根节点是否为空,若为空则返回true。
- 接着调用fun方法,传入根节点的左子节点和右子节点进行判断。
fun方法的逻辑是:
- 如果A和B都为空,则返回true;
- 如果A和B有一个为空或者值不相等,则返回false;
- 否则递归判断A的左子节点和B的右子节点是否对称,以及A的右子节点和B的左子节点是否对称。
- 最终,通过递归层层返回结果,得出是否对称的判断结果。
时间复杂度为O(n)
代码:
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/ class Solution {public boolean isSymmetric(TreeNode root) {if(root==null) return true;return fun(root.left,root.right);}public boolean fun(TreeNode A,TreeNode B){if(A==null&&B==null) return true;if(A==null||B==null||A.val!=B.val) return false;return fun(A.left,B.right)&&fun(A.right,B.left);} }
运行结果:
查看全文
99%的人还看了
相似问题
- 〖大前端 - 基础入门三大核心之JS篇㊲〗- DOM改变元素节点的css样式、HTML属性
- Java 算法篇-链表的经典算法:判断回文链表、判断环链表与寻找环入口节点(“龟兔赛跑“算法实现)
- 代码随想录二刷 | 链表 | 删除链表的倒数第N个节点
- 节点导纳矩阵
- bhosts 显示节点 “unreach“ 状态
- 电子电器架构 —— 车载网关边缘节点总线转换
- 〖大前端 - 基础入门三大核心之JS篇㊳〗- DOM访问元素节点
- 第四天||24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II
- CS224W5.1——消息传递和节点分类
- Vue报错解决Error in v-on handler: “Error: 无效的节点选择器:#div1“
猜你感兴趣
版权申明
本文"LeetCode算法递归类——剑指 Offer 28. 对称的二叉树":http://eshow365.cn/6-9274-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: Vue3 ~
- 下一篇: 二叉树(相关术语、创建、遍历、最大深度问题)梳理总结