leetcode101 对称二叉树

举报
兔老大 发表于 2021/04/24 00:50:26 2021/04/24
【摘要】 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。     1    / \   2   2  / \ / \ 3  4 4  3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: &n...

给定一个二叉树,检查它是否是镜像对称的。

例如,二叉树 [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. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. public boolean isSymmetric(TreeNode root) {
  12. return isMirror(root, root);
  13. }
  14. public boolean isMirror(TreeNode t1, TreeNode t2) {
  15. if (t1 == null && t2 == null) return true;
  16. if (t1 == null || t2 == null) return false;
  17. return (t1.val == t2.val)
  18. && isMirror(t1.right, t2.left)
  19. && isMirror(t1.left, t2.right);
  20. }
  21. }

玄学迭代,自己看:


  
  1. public boolean isSymmetric(TreeNode root) {
  2. Queue<TreeNode> q = new LinkedList<>();
  3. q.add(root);
  4. q.add(root);
  5. while (!q.isEmpty()) {
  6. TreeNode t1 = q.poll();
  7. TreeNode t2 = q.poll();
  8. if (t1 == null && t2 == null) continue;
  9. if (t1 == null || t2 == null) return false;
  10. if (t1.val != t2.val) return false;
  11. q.add(t1.left);
  12. q.add(t2.right);
  13. q.add(t1.right);
  14. q.add(t2.left);
  15. }
  16. return true;
  17. }

 

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/103357254

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。