算法-简单-二叉树-翻转、对称

记录一下算法题的学习8

翻转二叉树

翻转二叉树题目

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

举例:给定root[5,3,7,2,4,6,10]  翻转成为root[5,7,3,10,6,4,2]

即所有的根节点的左右节点都要互换位置,输出的左右子树的位置跟输入正好是相反的

在经历前面一些简单二叉树的学习,递归的方法很快就做出来了

递归-深度优先搜索

class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root == null){
            return  null;
        }
        TreeNode left=invertTree(root.left);
        TreeNode right=invertTree(root.right);
        //这里就是进行二叉树的翻转
        root.left=right;
        root.right=left;
        //错误写法
        // right=root.left;
        // left=root.right;
        return root;
    }
}

迭代-广度优先搜索-层层扫荡代码展示: 

class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root == null){
            return  root;
        }
       //将二叉树中的节点逐层放入队列中,再迭代处理队列中的元素
		Queue<TreeNode> queue = new LinkedList<TreeNode>();
		queue.add(root);
        //由此循环处理每一个节点
		while(!queue.isEmpty()) {
			//每次都从队列中拿一个节点,并交换这个节点的左右子树
            //了解public E poll () 返回值: 该方法从此队列的开头返回元素;如果此队列为空,则返回null。
			TreeNode temp = queue.poll(); //这里第一次出来的就是根节点
			TreeNode  deposit  = temp.left;//我们将根节点的的第一个左子节点暂时存放在存放点deposit中
			temp.left = temp.right;//这里就能进行交换-->使根节点的的第一个右子节点占据原本根节点的的第一个左子节点的位置

			temp.right =deposit;//而原本根节点的的第一个右子节点的值就变成了根节点的的第一个左子节点

            //接下来就是重复逐层操作
			//如果当前节点的左子树不为空,则放入队列等待后续处理
			if(temp.left!=null) {
				queue.add(temp.left);
			}
			//如果当前节点的右子树不为空,则放入队列等待后续处理
			if(temp.right!=null) {
				queue.add(temp.right);
			}
			
		}
		//返回处理完的根节点
		return root;
	}
}

对称二叉树

二叉树题目

给你一个二叉树的根节点 root , 检查它是否轴对称。

什么是轴对称?

如果一个图形沿一条直线折叠,直线两旁的部分能够完全重合,那么直线两旁的部分成轴对称

举例root[1,2,2,3,4,4,3]

而root[1,2,2,null,3,null,3]

代码实现

*通过「同步移动」两个指针的方法来遍历这棵树,node1 指针和 node2 指针一开始都指向这棵树的根,随后 node1右移时,node2左移,node1左移时,node2右移。每次检查当前 node1 和 node2节点的值是否相等,如果相等再判断左右子树是否对称。
  */
class Solution {
    public boolean isSymmetric(TreeNode root) {
        return check(root,root);
    }
      public boolean check(TreeNode node1,TreeNode node2){
       if(node1==null&&node2==null){
           return true;
       }
       if(node1==null||node2==null){
           return false;
       }
       return node1.val==node2.val && check(node1.left,node2.right) && check(node1.right,node2.left);
       
      }
}

记录问题:

当复制粘贴代码运行时出现报错illegal character U+00A0异常

如何解决?

空格分类 :

  1. \u00A0:不间断空格,主要用在office中,让一个单词在结尾处不会换行显示
  2. \u0020:半角空格(英文符号),代码中常用的
  3. \u3000:全角空格(中文符号),中文文章中使用

解决方法:

将这些空格替换,首先选中单个报红的空格(我们无法看出分别,但编辑器可以它直接提示你在多少行),Ctrl+R 进行全局替换正常代码用的空格。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/170490.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BUUCTF 菜刀666 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 流量分析&#xff0c;你能找到flag吗 注意&#xff1a;得到的 flag 请包上 flag{} 提交 密文&#xff1a; 下载附件&#xff0c;解压得到一个.pcapng文件。 解题思路&#xff1a; 1、双击文件&#xff0c;打开wir…

两种典型的雷达框架,traditional chain (待深入了解)和Capon Beamforming Chain(已经了解)

如图1所示&#xff0c;第1种是被称作“traditional chain”, 它的处理思路是adc数据作range-FFT&#xff0c;再到doppler-FFT&#xff0c;构建range-Dopper map&#xff0c;再到cfar&#xff0c;最后对候选点作angle-FFT&#xff0c;当然&#xff0c;这是最经典的framework&…

查找二叉树中第k层中度为1的节点数量(可运行)

注意&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;如果没有输出结果&#xff0c;一定是输入的建树序列有错误&#xff0c;我建好了2棵树&#xff0c;如果没有输出结果&#xff0c;大家可以用这两棵树试。 main函数的btDepth(t,2)第二个参数是树的层数了k&…

SAP创建权限对象、角色、并分配角色

一、SU20&#xff1a;维护权限字段 二、SU21创建权限对象,分配权限字段: 三、SU24关联程序和自建权限对象&#xff08;标准tcode会默认存在标准权限对象&#xff09; 四、PFCG创建角色 五、SU01给用户分配角色 一、su20&#xff1a;维护权限字段 X点新建&#xff1a; 填入…

什么是策划能力?如何提高策划能力?

什么是策划能力&#xff1f; 通常我们理解的策划能力&#xff0c;大多指的是策划活动&#xff0c;比如举办一次活动先要进行活动策划&#xff0c;形成具体的行动方案&#xff0c;然后开展组织人力物力等资源&#xff0c;最终落地实施。策划能力包含活动策划&#xff0c;但又不…

vscode设置前进、后退快捷键

前言 在我们使用vscode编写程序时&#xff0c;经常需要在不同的文件之间跳来跳去&#xff0c;如果只是依靠个人记忆去操作会显得非常不方便。本文介绍如何设置vscode的前进、后退快捷键。 1 vscode设置前进、后退快捷键 点击“设置”图标&#xff0c;然后点击“键盘快捷方式…

NX二次开发UF_CAM_ask_lower_limit_plane_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;里海NX二次开发3000例专栏 UF_CAM_ask_lower_limit_plane_data Defined in: uf_cam_planes.h int UF_CAM_ask_lower_limit_plane_data(tag_t object_tag, double origin [ 3 ] , double normal [ 3 ] ) overview 概述 Query …

NX二次开发UF_CAM_ask_lower_limit_plane_status 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;里海NX二次开发3000例专栏 UF_CAM_ask_lower_limit_plane_status Defined in: uf_cam_planes.h int UF_CAM_ask_lower_limit_plane_status(tag_t object_tag, UF_PARAM_lwplane_status_t * status ) overview 概述 Query the…

Ubuntu本地快速搭建web小游戏网站,公网用户远程访问

前言 网&#xff1a;我们通常说的是互联网&#xff1b;站&#xff1a;可以理解成在互联网上的一个房子。把互联网看做一个城市&#xff0c;城市里面的每一个房子就是一个站点&#xff0c;房子里面放着你的资源&#xff0c;那如果有人想要访问你房子里面的东西怎么办&#xff1…

酷开科技丨这么好用的酷开系统,不用真的会后悔!

掀开一幕幕精彩剧情&#xff0c;手机已经成为了我们身边必不可少的追剧神器。在这个信息爆炸的时代&#xff0c;我们渴望能够随时随地享受到精彩的影视作品&#xff0c;尤其是在家的休息的时候&#xff0c;希望电视也能同手机一样&#xff0c;想看啥就搜啥。酷开科技大内容战略…

基于可变形卷积和注意力机制的带钢表面缺陷快速检测网络DCAM-Net(论文阅读笔记)

原论文链接->DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Based on Deformable Convolution and Attention Mechanism | IEEE Journals & Magazine | IEEE Xplore DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Base…

关于使用宝塔页面Nginx的一些注意事项:Nginx不生效情况,以及解决方案

判断Nginx是否正常运行 使用宝塔页面保存Nginx配置后&#xff0c;有的时候不生效&#xff0c;这就说明Nginx没有正常运行 可以通过以下几种方式排查 通过宝塔 如果能够打开负载状态&#xff0c;说明Nginx运行正常 如果打不开&#xff0c;说明肯定是配置文件或者什么导致ngi…

探索人工智能领域——每日30个名词详解【day4】

目录 前言 正文 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如需转载&#xff0c;请事先与我联系以…

ros2机器人上位机与下位机连接方式(转载)

从硬件连接、通信协议和软件设计开发&#xff0c;上位机如何控制下位机&#xff1f; 由你创科技2023-09-07 10:38广东 随着科技的不断发展&#xff0c;自动化控制系统已经广泛应用于各个行业。在自动化控制系统中&#xff0c;上位机和下位机是两个重要的组成部分。上位机主要…

NX二次开发UF_CAM_ask_opt_template_object 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;里海NX二次开发3000例专栏 UF_CAM_ask_opt_template_object Defined in: uf_cam.h int UF_CAM_ask_opt_template_object(UF_CAM_opt_t * opt_object ) overview 概述 This function provides the object which is used to in…

NX二次开发UF_CAM_ask_post_template_name 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;里海NX二次开发3000例专栏 UF_CAM_ask_post_template_name Defined in: uf_cam.h int UF_CAM_ask_post_template_name(const char * * post_template_filename ) overview 概述 This function provides the name of the file…

上位机下位机串口通信设计详解(转载)

直观学PLC • 来源&#xff1a;直观学PLC • 2023-02-21 09:55 • 4233次阅读 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去&#xff0c;同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路&#xff0c;我们…

人工智能AI 全栈体系(十三)

第二章 计算机是如何学会下棋的 人类棋手在下棋时&#xff0c;会根据自己的经验只考虑在当前棋局下最重要的几个可能的走法&#xff0c;但是计算机没有这种经验。 知识太复杂了&#xff0c;需要考虑很多具体的情况&#xff0c;一旦知识总结的不到位&#xff0c;可能就会出现大…

【寒武纪(14)】硬件系统由标量指令、向量指令、张量指令、访存指令构成

我们在文档《Cambricon-BANG-C-Developer-Guide-EN-v4.5.1》的build-in function 发现&#xff0c;存在三种计算&#xff1a;矩阵乘法、标量类型、向量。 查阅《Cambricon-BANG-C-CProgramming-Guide-CN-v1.5.0.pdf》可知&#xff0c;硬件系统由标量指令、向量指令、张量指令、…