leetcode-0101 对称二叉树
题目地址 https://leetcode-cn.com/problems/symmetric-tree/
1.递归
本题最简单的思路是递归,可以假设两棵一模一样的树在进行镜像对比。他们之间的关系满足node1.left == node2.right且node1.right == node2.left
时间复杂度O(n) n为节点的个数;空间复杂度O(h) h为二叉树的最大深度
class Solution {
    public boolean isSymmetric(TreeNode root) {
        return mirror(root, root);
    }
    private boolean mirror(TreeNode node1, TreeNode node2) {
        if (node1 == null && node2 == null) return true;
        if (node1 == null || node2 == null) return false;
        return node1.val == node2.val
            && mirror(node1.left, node2.right)
            && mirror(node2.left, node1.right);
    }
}
2.BFS
广度优先搜索思路还是和递归一样,假设是两棵一模一样的树在进行镜像对比。时间复杂度O(n) 空间复杂度O(n)
public boolean isSymmetric(TreeNode root) {
  Queue<TreeNode> q = new LinkedList<>();
  q.add(root);
  q.add(root);
  while (!q.isEmpty()) {
      TreeNode t1 = q.poll();
      TreeNode t2 = q.poll();
      if (t1 == null && t2 == null) continue;
      if (t1 == null || t2 == null) return false;
      if (t1.val != t2.val) return false;
      q.add(t1.left);
      q.add(t2.right);
      q.add(t1.right);
      q.add(t2.left);
  }
  return true;
}
java版本
class Solution {
    public boolean isSymmetric(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<>();
        if (root == null)
            return true;
        queue.offer(root);
        queue.offer(root);
        while(!queue.isEmpty()) {
            TreeNode node1 = queue.poll();
            TreeNode node2 = queue.poll();
            if (node1 == null && node2 == null)
                continue;
            if (node1 == null || node2 == null)
                return false;
            if (node1.val != node2.val)
                return false;
            queue.offer(node1.left);
            queue.offer(node2.right);
            queue.offer(node1.right);
            queue.offer(node2.left);
        }
        return true;
    }
}
更多LeetCode题解和数据结构方面的内容,可以关注我的github,求个star~ ▄█▔▉●
leetcode-0101 对称二叉树的更多相关文章
- LeetCode 101 对称二叉树的几种思路(Python实现)
		对称二叉树 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \3 4 4 3 但是下面这个 [1,2,2 ... 
- Java实现 LeetCode 101 对称二叉树
		101. 对称二叉树 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2 ... 
- 领扣(LeetCode)对称二叉树 个人题解
		给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,nul ... 
- LeetCode 101. 对称二叉树(Symmetric Tree)
		题目描述 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null, ... 
- LeetCode 101.对称二叉树 - JavaScript
		题目描述:给定一个二叉树,检查它是否是镜像对称的. 题目分析 下面这种二叉树就是镜像对称的,符合题目要求: 1 / \ 2 2 / \ / \ 3 4 4 3 解法 1:递归检查 根据题目" ... 
- 【Leetcode】对称二叉树
		递归法 执行用时 :12 ms, 在所有 C++ 提交中击败了43.44%的用户 内存消耗 :14.6 MB, 在所有 C++ 提交中击败了95.56%的用户 /** * Definition for ... 
- LeetCode【101. 对称二叉树】
		对称二叉树,就是左节点的左节点等于右节点的右节点,左节点的右节点等于右节点的左节点. 很自然就想到迭代与递归,可以创建一个新的函数,就是另一个函数不断的判断,返回在主函数. class Solutio ... 
- Leecode刷题之旅-C语言/python-101对称二叉树
		/* * @lc app=leetcode.cn id=101 lang=c * * [101] 对称二叉树 * * https://leetcode-cn.com/problems/symmetri ... 
- C语言递归之对称二叉树
		题目描述 给定一个二叉树,检查它是否是镜像对称的. 示例 二叉树 [1,2,2,3,4,4,3] 是对称的. / \ / \ / \ [1,2,2,null,3,null,3] 则不是镜像对称的. / ... 
- 【Leetcode】104. 二叉树的最大深度
		题目 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例:给定二叉树 [3,9,20,null,null,15,7 ... 
随机推荐
- 比CNN表现更好,CV领域全新卷积操作OctConv厉害在哪里?
			CNN卷积神经网络问世以来,在计算机视觉领域备受青睐,与传统的神经网络相比,其参数共享性和平移不变性,使得对于图像的处理十分友好,然而,近日由Facebook AI.新家坡国立大学.360人工智能研究 ... 
- 震惊!程序员的福音!不需要敲代码就能完成复杂的逻辑应用?                   —— Azure Logic App
			(大家看完标题可能以为是营销号,哈哈哈哈哈哈哈哈哈...客官请留步, 正经博主....好吧) 今天我们的主题是Azure Logic Apps Azure Logic Apps 是什么? 官方解释:h ... 
- RabbitMQ 交换机类型
			1,扇形交换机 fanout 2, 直连交换机 direct 3, 通配符交换机 topic 
- SpringBoot 集成ehcache
			1, 项目实在springboot 集成mybatis 的基础上的: https://www.cnblogs.com/pickKnow/p/11189729.html 2,pom 如下,有的不需要加, ... 
- 基于vue-cli-和element-ui的开发admin(1)
			//首先以下仅是记录个人本次vue后台管理系统的登录界面部分操作的流程以及踩坑的注意点 一.首先是搭建vue-cli工作环境 这里有两种方式:1.用npm:(在安装了vue,vue-cli以及webp ... 
- 树莓派 Raspberry PI基础
			树莓派 Raspberry PI基础 官网网址:https://www.raspberrypi.org 下载地址:https://www.raspberrypi.org/downloads/ 官方系统 ... 
- Mybatis多表关联查询字段值覆盖问题
			一.错误展示 1.首先向大家展示多表关联查询的返回结果集 <resultMap id="specialdayAndWorktimeMap type="com.hierway. ... 
- STL(六)——map、multimap
			STL--map.multimap 文章目录 STL--map.multimap 关联容器与map的介绍 map与set的异同 map与multimap的异同 map类对象的构造 map添加元素 ma ... 
- 【开源】使用Angular9和TypeScript开发RPG游戏(20200410版)
			源代码地址 通过对于斗罗大陆小说的游戏化过程,熟悉Angular的结构以及使用TypeScript的面向对象开发方法. Github项目源代码地址 RPG系统构造 ver0.03 2020/04/10 ... 
- 【php】字符串
			1.字符串的定义方式:1.单引号 ''2.双引号 ""3.定界符 <<<注意结束时的使用例:$str = <<<myStr字符串内容myStr; ... 
