看题解时,很多大牛用很少的代码就完成了AC,但可能看了很多遍也看不懂,因此萌生了写一种最“笨”最完整的代码的想法,这样大家可以通过我的代码入门,看懂了再去挑战大牛们的简洁解法。


请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

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

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

限制:
0 <= 节点个数 <= 1000


题意:判断某树是否是对称的

最初思路:求出其“左根右”顺序的序列,求出其“右根左”顺序的序列,查看二者序列是否相等即可。

特例:若某个树的所有节点值都是相同的,则上述思路不成立。 因为即使树不对称,节点序列也始终相同。

改进1:将null值加入到序列中,这样就不会因为节点相同而误判。
改进2:直接在递归过程中完成判断,避免开辟多余的存储空间存储数组


class Solution {public boolean isSymmetric(TreeNode root) {if(root == null) return true;// 同步对比左子树和右子树,因此新建一个方法进行递归return isSymmetric(root.left, root.right);}public boolean isSymmetric(TreeNode r1, TreeNode r2) {// 1、判断结构是否相同(空指针)if(r1 == null && r2 == null) return true;if(r1 == null || r2 == null) return false;// 2、判断值是否相同if(r1.val != r2.val) return false;// 3、若既同构,而且值也相等,则应递归boolean flag = false;flag = isSymmetric(r1.left, r2.left) && isSymmetric(r1.right, r2.right);return flag;}
}

木秀于林,风必摧之;堆出于岸,流必湍之;行高于人,众必非之。

剑指 Offer 28. 对称的二叉树【无取巧,易于理解!】相关推荐

  1. 《LeetCode力扣练习》剑指 Offer 28. 对称的二叉树 Java

    <LeetCode力扣练习>剑指 Offer 28. 对称的二叉树 Java 一.资源 题目: 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的 ...

  2. LeetCode Algorithm 剑指 Offer 28. 对称的二叉树

    剑指 Offer 28. 对称的二叉树 Ideas 一开始想的有问题,看了例子以为对称二叉树的中序遍历序列是回文数组,然后就用这么写了,结果到第192个测试用例[1,2,2,2,null,2]就失败了 ...

  3. 【LeetCode】剑指 Offer 28. 对称的二叉树

    [LeetCode]剑指 Offer 28. 对称的二叉树 文章目录 [LeetCode]剑指 Offer 28. 对称的二叉树 一.递归 一.递归 对称二叉树定义:对于书中任意两个对称结点 L 和 ...

  4. 剑指 Offer 28. 对称的二叉树 -- 递归

    0 题目描述 leetcode原题链接:剑指 Offer 28. 对称的二叉树 1 递归解法 对称二叉树定义: 对于树中 任意两个对称节点 LLL 和 R,R,R, 一定有: L.val=R.val: ...

  5. 【Java】 剑指offer(28) 对称的二叉树

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它 ...

  6. LeetCode-剑指 Offer 28. 对称的二叉树

    剑指 Offer 28. 对称的二叉树 对称二叉树定义:对于树中任意两个对称节点L和R,一定有: L.val == R.val:这两个对称节点值相等 L.left.val == R.right.val ...

  7. 剑指offer:对称的二叉树(镜像,递归,非递归DFS栈+BFS队列)

    1. 题目描述 /**请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的 */ 2. 递归 思路: /**1.只要pRoot.left和pRo ...

  8. 剑指offer:对称的二叉树

    题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 解题 递归做法 /* struct TreeNode {int val;str ...

  9. 剑指offer之对称的二叉树

    题目简介 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 解题思路 注意一个点,对称要求对应的值也是相等的. 给出对称二叉树的定义: 空 ...

最新文章

  1. 设计模式 -- 策略模式
  2. 亿条数据读取工具_运维数据的统一治理(上)
  3. 因为世界杯!我们为你承包了整个网易~
  4. 开发里程碑计划_如何通过里程碑控制项目进度
  5. 阿里云 ssh 登陆请使用(公)ip
  6. 常见几种web攻击方式和防御方法
  7. 云服务器+Dock+搭建个人博客网站
  8. 2020考研计算机(408)考试大纲
  9. iphone怎样关闭副屏_机情烩:联通eSIM主副卡业务上线 副卡套餐最低仅10元
  10. 老大告诉我不要用字符串存IP地址,不兴~
  11. Kotlin真的值得学习吗?
  12. 伪漫迷用数据假装看了一遍《复联4》
  13. STM32 HAL库之看门狗
  14. 企业网络和家庭网络区别
  15. 我做的一个java简单文本编辑器代码
  16. 朱嘉明 | 认知未来货币需要新的思想资源
  17. Android之vertical和horizontal的区别
  18. 视频播放器GSYVideoPlayer
  19. JVM-对象什么时候进入老年代(实战篇)
  20. 用FreePic2Pdf软件轻松实现PDF书签的完美导出

热门文章

  1. 你了解HTTPS工作原理吗?
  2. STL中算法锦集(一)
  3. WebRTC 2021 流行趋势大赏
  4. 企业必须关注的IPv6网络安全25问
  5. 【git重案组】如何逃避git blame的追踪?
  6. 编程语言代码编写指南
  7. golang修改文件的最后访问时间,最后修改时间
  8. java.lang.IllegalArgumentException: requirement failed: No output operations registered, so nothing
  9. Spark _23 _读取parquet文件创建DataFrame(二)
  10. leetcode 91. Decode Ways | 91. 解码方法(动态规划)