前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >天天算法 LeetCode-101-对称二叉树

天天算法 LeetCode-101-对称二叉树

作者头像
灵魂画师牧码
发布2019-06-26 15:32:21
3260
发布2019-06-26 15:32:21
举报
文章被收录于专栏:灵魂画师牧码灵魂画师牧码

题目链接

https://leetcode-cn.com/problems/symmetric-tree/

题目描述

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

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

代码语言:javascript
复制
    1
   / \
  2   2
 / \ / \
3  4 4  3

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

代码语言:javascript
复制
    1
   / \
  2   2
   \   \
   3    3

解题方案

思路

  • 标签:dfs
  • 递归结束条件:
    • 都为空指针则返回true
    • 只有一个为空则返回false
  • 递归过程:
    • 判断两个指针当前节点值是否相等
    • 判断A的右子树与B的左子树是否对称
    • 判断A的左子树与B的右子树是否对称
  • 短路:在递归判断过程中存在短路现象,也就是做操作时,如果前面的值返回false则后面的不再进行计算
  • 时间复杂度:O(n)

算法动图

代码

代码语言:javascript
复制
class Solution {
    public boolean isSymmetric(TreeNode root) {
        return isMirror(root, root);
    }

    public boolean isMirror(TreeNode t1, TreeNode t2) {
        if (t1 == null && t2 == null) return true;
        if (t1 == null || t2 == null) return false;
        return (t1.val == t2.val)
            && isMirror(t1.right, t2.left)
            && isMirror(t1.left, t2.right);
    }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 牧码啦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目链接
  • 题目描述
  • 解题方案
    • 思路
      • 代码
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档