【数据结构】翻转二叉树的三种方式

article/2025/9/4 22:47:52

一、分析在这里插入图片描述

理解递归思想的条件下很容易想到解题思路,当然可能有人会有疑问,那什么情况下知道使用递归呢,有个最简单的办法如果算法里需要重复循环用同一个思路执行得到结果,那么必然可以使用递归。进行翻转本质上可以拆分为两步递归,递归翻转左子树和递归翻转右子树分。无论是否使用递归本质思想是一致的,使用非递归的方式则需要借助使用栈或者队列的结构进行存储未交换的子节点。

二、反转二叉树的实现方式

方式一:使用栈实现

本质思想是,左右节点进行交换,循环翻转每个节点的左右子节点,将未翻转的子节点存入栈中,循环直到栈里所有节点都循环交换完为止。

        public TreeNode invertTree(TreeNode root) {	        if (root == null) {return null;}Stack<TreeNode> stack = new Stack<>();stack.push(root);	        while(!stack.isEmpty()) {final TreeNode node = stack.pop();final TreeNode left = node.left;node.left = node.right;node.right = left;           if(node.left != null) {stack.push(node.left);}if(node.right != null) {stack.push(node.right);}}return root;}

方式二:使用队列实现

本质思想是,左右节点进行交换,循环翻转每个节点的左右子节点,将未翻转的子节点存入队列中,循环直到栈里所有节点都循环交换完为止。

	public TreeNode invertTree(TreeNode root) {if (root == null) {return null;}Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {TreeNode node = queue.poll();TreeNode left = node.left;node.left = node.right;node.right = left;if (node.left != null) {queue.offer(node.left);}if (node.right != null) {queue.offer(node.right);}}return root;}

方式三:使用递归来实现

本质思想,是左右节点进行交换,交换前递归调用对根结点的左右节点分别进行处理,保证交换前左右节点已经翻转。

	public TreeNode invertTree(TreeNode node) {if (node == null) {return null;}TreeNode temp = node.left;node.left = node.right;node.right = temp;invertTree(node.left);invertTree(node.right);return node;}

http://chatgpt.dhexx.cn/article/KGjEuqyK.shtml

相关文章

以太网常用接口

1.PHY层的主要作用就是将MAC层数据&#xff08;MII接口数据&#xff09;通过串并转换器&#xff0c;重新排序&#xff0c;并根据响应的调制方式&#xff0c;将信号重新编码&#xff0c;再通过MDI接口&#xff08;介质相关接口&#xff09;将数据通过对应线路传送出去。具体过程…

用计算机输入输出,计算机输入/输出接口的作用是什么

计算机输入/输出接口的作用是什么以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 计算机输入/输出接口的作用是什么 计算机输入输出接口是CPU与外部设备之间交换信息的连接电路,它们通过总线与CPU相连,简称I/O…

IO接口概念

本部分是作者在复习计算机组成原理时候参考王道视频做的笔记。 I/O接口&#xff1a;又称I/O控制器(I/O Controller)、设备控制器&#xff0c;负责协调主机与外部设备之间的数据传输。 IO接口的作用 数据缓冲:通过数据缓冲寄存器&#xff08;DBR&#xff09;达到主机和外设工…

EnvironmentAware接口的作用

在SpringBoot中的应用 凡注册到Spring容器内的bean&#xff0c;实现了EnvironmentAware接口重写setEnvironment方法后&#xff0c;在工程启动时可以获得application.properties的配置文件配置的属性值。 demo演示 直接上代码&#xff0c;比如我的application.properties文件有…

接口文档在项目中的作用

前后端合作开发的时候经常需要用到接口文档&#xff0c;那么接口文档在产品中究竟有什么作用&#xff1f;该如何去规范呢&#xff1f; 约束 假如你的项目中有若干前端和若干后端。你现在需要开发一个登陆接口&#xff0c;通常情况下这个功能一个前端和一个后端开发就足够了。…

接口的组成和作用

脑图&#xff1a; 什么是接口&#xff1f; 接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点&#xff0c;定义特定的交互点&#xff0c;然后通过这些交互点来&#xff0c;通过一些特殊的规则也就是协议&#xff0c;来进行数据之间的交互。 接口都有哪些类型…

Java序列化接口Serializable接口的作用总结

一.Java序列化接口Serializable的作用&#xff1a; 一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做”持久化”. 对象的默认序列化机制写入的内容是&#xff1a;对象的类&#xff0c;类签名&#xff0c;以及非瞬态和非静态字段的值。(因为静态static的东西在方…

serializable接口的作用是什么?

serializable接口的作用&#xff1a; 1、存储对象在存储介质中&#xff0c;以便在下次使用的时候&#xff0c;可以很快捷的重建一个副本&#xff1b; 2、便于数据传输&#xff0c;尤其是在远程调用的时候。 Serializable接口是启用其序列化功能的接口。实现java.io.Serializ…

Mapper 接口的如何起作用

在 MyBatis 的初始化过程中&#xff0c;每个一个 XML 映射文件中的<select />、<insert />、<update />、<delete />标签&#xff0c;会被解析成一个 MappedStatement 对像&#xff0c;对应的 id 就是 XML 映射文件配置的 namespace’.’statementId&a…

C#接口作用的深入理解

原文出处&#xff1a; 指尖流淌-吴学雷 1、C#接口的作用 C# 接口是一个让很多C#初学者容易迷糊的东西&#xff0c;用起来好像很简单&#xff0c;定义接口&#xff0c;里面包含方法&#xff0c;但没有方法具体实现的代码&#xff0c;然后在继承该接口的类里面要实现接口的所有…

java接口的作用和意义_Java接口的作用与意义

接口 1.接口的特点 首先看下面的这个抽象类代码: 抽象类代码中变量全为常量,方法全是抽象方法,这样的形式,我们可以将它们定义为接口类,书写方式如下: 接口的语法为: interface接口名{常量或方法 } 接口特点: 所有的属性都是公开静态常量所有的方法都是公开抽象方法没有…

java接口有什么用_接口有什么作用

接口的作用:1、接口可以使项目分离,所有层都面向接口开发,提高开发效率;2、接口使代码和代码之间的耦合度降低;3、接口可以多实现,多继承,并且一个类除了接口之外,还可以继承其它类。 接口的作用: 1、可以使项目分离,所有层都面向接口开发,提高开发效率; 2、接口使…

Comparable接口作用

今天在开发中无意看到Integer包装类内部实现了Comparable接口&#xff0c;因此探查一下该接口作用&#xff1a; 查看API解释&#xff1a; 此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序&#xff0c;类的 compareTo 方法被称为它的自然比较方法。…

java接口的作用是什么?接口的使用规范介绍

你知道java接口的作用有哪些吗&#xff1f;java接口的使用规范又是怎样的呢&#xff1f;有哪些是需要我们注意的?下面一起来详细的了解一下吧。 java接口的作用是什么&#xff1f; 一、接口的作用 首先&#xff0c;我们来谈论一下java接口的作用吧! 简单的来说&#xff0c…

接口的作用

今日内容&#xff1a;接口概述、接口定义、接口的用法、接口的继承、接口和抽象类的区别。 1.概述 接口定义了实现某种功能的规范&#xff0c;用来扩展类的功能。接口并不是类&#xff0c;编写接口的方式和类很相似&#xff0c;但是它们属于不同的概念。类描述对象的属性和方法…

Pregel Master

转载于:https://www.cnblogs.com/fanweisheng/p/11269479.html

Pregel Combiner

转载于:https://www.cnblogs.com/fanweisheng/p/11269462.html

Pregel Aggregator

转载于:https://www.cnblogs.com/fanweisheng/p/11269466.html

Pregel Worker

转载于:https://www.cnblogs.com/fanweisheng/p/11269474.html

图计算-Pregel-Hama

一.图计算简介 1.1 图计算是专门针对图结构数据的处理&#xff0e; 许多大数据都是以大规模图或网络的形式呈现&#xff1b;许多非图结构的大数据&#xff0c;也常常被转换为图模型后进行分析&#xff1b;图结构很好地表达了数据之间的关联性&#xff1b;关联性计算是大数据计…