[算法刷题笔记]二叉树练习(2) 对称二叉树有关的练习_给定两个根结点分别为root1 和root2 二又树,请判断这两棵树是否完全相同数据范围

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

✨对称二叉树有关的练习

📃个人主页:
不断前进的皮卡丘

🌞博客描述:
梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记

🔥网站推荐:千里之行,始于足下。每天坚持刷题,巩固所学知识,也为将来找工作,面试做好准备-----
刷题神器

前言

学习算法,还有一些知识的时候,有时候看书后以为自己懂了,结果做题就发现自己没什么思路,为此,博主决定坚持刷题,这里给大家推荐一个适合大家做题复习,准备面试的网站点此进入,里面还有大量的面经,大家可以在面试之前去看看
在这里插入图片描述
我们可以看到里面根据不同知识层面分成对应的题库,算法也进行了对应的分类,十分的友好,接下来就开始今天的刷题之旅

⛱️对称二叉树

题目链接对称二叉树
给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)
例如: 下面这棵二叉树是对称的
在这里插入图片描述
下面这棵二叉树不对称。
在这里插入图片描述

🥪🥪 递归

在这里插入图片描述
1️⃣我们先看看根节点是否为空,根节点为空,则返回true,否则就得递归比较左右节点
2️⃣如果左右节点都为空,则返回true
3️⃣如果左节点为空,右节点不为空,或者左节点不为空,右节点为空,则返回false
4️⃣接下来,就是左右节点都非空的情况,我们就得比较节点的数值是否相等
5️⃣接下来就是递归遍历了,递归比较外侧(左节点的左孩子和右节点的右孩子比较)和内测(左节点的右孩子和右节点的左孩子)的情况
在这里插入图片描述

🥪🥪迭代(使用队列)

思路和刚刚递归是一样的,只是实现方法不一样
具体的图解大家可以去里面看看题解

public class Solution {
    boolean isSymmetrical(TreeNode pRoot) {
        //先判断根节点
        if(pRoot==null) return true;
           Queue<TreeNode> deque = new LinkedList<>();
        deque.offer(pRoot.left);
        deque.offer(pRoot.right);
        while (!deque.isEmpty()) {
            TreeNode leftNode = deque.poll();
            TreeNode rightNode = deque.poll();
            if (leftNode == null && rightNode == null) {
                continue;
            }
             if (leftNode == null && rightNode != null) {
                return false;
            }
             if (leftNode != null && rightNode == null) {
                return false;
           }
            if (leftNode.val != rightNode.val) {
                 return false;
            }
          
            // 这里顺序与使用Deque不同
            deque.offer(leftNode.left);
            deque.offer(rightNode.right);
            deque.offer(leftNode.right);
            deque.offer(rightNode.left);
        }
        return true;
    }
        
        
    
}

⛱️相同的二叉树

相同的二叉树
给定两个根结点分别为 root1root1 和 root2root2 二叉树,请判断这两棵树是否完全相同。
数据范围:
−104≤Node.val≤104−10
4
≤Node.val≤10
4

两棵树上的节点数目都在范围 [0, 100] 内
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🥪🥪递归

1️⃣我们先比较根节点
2️⃣如果两颗二叉树的根节点都为空,则返回true
3️⃣如果两棵树,其中一个根节点为空,另一个非空,则返回false
4️⃣如果两棵树根节点都非空,则比较数值,不相等返回false
5️⃣如果根节点数值相同,则递归比较左右子树
6️⃣左右子树等相同则返回true,否则返回false
在这里插入图片描述
在这里插入图片描述

🥪🥪迭代法(使用队列)

1️⃣我们可以用两个队列来解决这个问题,队列保存树的结点
2️⃣逐层把二叉树的结点加入队列中
3️⃣判断逻辑和递归是一样的
在这里插入图片描述

⛱️判断t1树中是否有与t2树完全相同的子树

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

入研究,那么很难做到真正的技术提升。**

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值