Java来实现二叉树算法,将一个二叉树左右倒置(左右孩子节点互换)

文章目录

  • 二叉树算法
    • 二叉树左右变换数据

今天来和大家谈谈常用的二叉树算法

二叉树算法

二叉树左右变换数据

举个例子:
Java来实现二叉树算法,将一个二叉树左右倒置(左右孩子节点互换)如下图所示
在这里插入图片描述

实现的代码如下:以下定义的类是内部类

//    2. 讲一个做二叉树左右替换
//    1. 先给一个二叉树的内部类,类里面分出左右的对象的变量public static class Tree {private Object data;public Object getData() {return data;}public void setData(Object data) {this.data = data;}public Tree getLeft() {return left;}public void setLeft(Tree left) {this.left = left;}public Tree getRight() {return right;}public void setRight(Tree right) {this.right = right;}// 给出左右的树private Tree left;private Tree right;// 构造方法public Tree(Object data, Tree left, Tree right) {this.data = data;this.left = left;this.right = right;}/*** 获取二叉树的深度* @param root root* @return int*/public static int getMaxDepth(Tree root) {if (root == null) return 0;// 需要递归获取深度return Math.max(getMaxDepth(root.left), getMaxDepth(root.right)) + 1;}/*** 二叉树的交换方法OK,经过验证* @param root Tree*/public static void swap(Tree root) {if (root == null) return;// 交换Tree tmp = root.left;root.left = root.right;root.right = tmp;// 递归交换swap(root.left);swap(root.right);}/***  二叉树的左右交换* @param root*/public static void swapAgin(Tree root) {if (root == null) return;Stack<Tree> statck = new Stack<>();statck.push(root);while (!statck.isEmpty()) {Tree node = statck.pop();Tree tmp = node.left;node.left = node.right;node.right = tmp;if (node.left != null) {statck.push(node.left);}if (node.right != null) {statck.push(node.right);}}}public static void main(String[] args) {// 以下模拟的二叉树图片地址在此: https://img-blog.csdnimg.cn/1ae454d94ab04d8e8fb6f313248beb3a.pngTree left9 = new Tree(9, null, null);Tree right3 = new Tree(3, null, null);Tree right8 = new Tree(8, null, null);Tree left7 = new Tree(7, null, right8);Tree right11 = new Tree(11, left9, right3);Tree root5 = new Tree(5, left7, right11);System.out.println("原始的二叉树结果:" + root5);
//       交换swap(root5);
//            swapAgin(root5);System.out.println("swap()方法交换之后的二叉树结构为:" + root5);}}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ECharts的颜色渐变

目录 一、直接配置参数实现颜色渐变 二、使用ECharts自带的方法实现颜色渐变 一、两种渐变的实现方法 1、直接配置参数实现颜色渐变 横向的渐变&#xff1a; //主要代码 option {xAxis: {type: category,boundaryGap: false,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yA…

云上巴蜀丨云轴科技ZStack成功实践精选(川渝)

巴蜀——古政权必争之地 不仅拥有优越的战略位置 而且拥有丰富的自然资源&#xff0c;悠久的历史文化 如今的川渝经济、人口发展迅速 2023年前三季度&#xff0c;四川与重庆GDP增速均超过国家平均线&#xff0c;为6.5%为5.6% 川渝经济发展带动数字化发展浪潮 云轴科技ZSt…

打造专属小程序,乔拓云模板平台助力商家抢占先机

打造专属小程序&#xff0c;乔拓云模板平台助力商家抢占先机&#xff01;该平台涵盖全行业小程序模板&#xff0c;一键复制即可上线。 想要快速创建高效实用的小程序&#xff0c;乔拓云小程序模板开发平台为您提供了解决方案&#xff01;我们为您提供一系列精心设计的小程序模板…

LeetCode Hot100 131.分割回文串

题目&#xff1a; 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 方法&#xff1a;灵神-子集型回溯 假设每对相邻字符之间有个逗号&#xff0c;那么就看…

[c++]—string类___深度学习string标准库成员函数与非成员函数(string的增删查改函数)

沉淀,沉淀,再沉淀. &#x1f469;&#x1f3fb;‍&#x1f4bb;作者:chlorine &#x1f449;上一篇&#xff1a;string标准库成员函数和非成员函数(上) 目录 &#x1f36d;构造和析构的实现 &#x1f36d; string→c类型的字符串数组 &#x1f36d;operator[]类对象元素的访…

c语言-动态内存管理

文章目录 一、为什么会有动态内存管理二、申请内存函数1、malloc2、free3、calloc4、realloc 三、常见的动态内存的错误四、练习 一、为什么会有动态内存管理 1.我们一般的开辟空间方式&#xff1a; int a 0;//申请4个字节空间 int arr[10] { 0 };//申请40个字节空间2.这样…

解决在Linux中进行redis的主从复制时出现的从机可以获取到主机的信息,主机获取不到从机的信息~

主机&#xff1a; 从机1&#xff1a; 从机2&#xff1a; 出现上述的原因是我在redis.conf中设置了密码&#xff0c;那么就导致了我在进行主从复制时&#xff0c;需要进行密码验证&#xff0c;然后我在网上查阅了很多资料&#xff0c;有的说让在从机中指定密码&#xff0c;有的说…

一对多聊天室

多人聊天包 由于要先创建服务面板&#xff0c;接收客户端连接的信息&#xff0c;此代码使用顺序为先启动服务端&#xff0c;在启动客户端&#xff0c;服务端不用关&#xff0c;不然会报错。多运行几次客户端&#xff0c;实现单人聊天 创建服务面板 package yiduiduo;import j…

【头歌系统数据库实验】实验7 SQL的复杂多表查询-1

目录 第1关&#xff1a;求各颜色零件的平均重量 第2关&#xff1a;求北京和天津供应商的总个数 第3关&#xff1a;求各供应商供应的零件总数 第4关&#xff1a;求各供应商供应给各工程的零件总数 第5关&#xff1a;求重量大于所有零件平均重量的零件名称 第6关&#xff1…

初识人工智能,一文读懂人工智能概论(1)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

Python Django-allauth: 构建全面的用户身份验证系统

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Django-allauth是一个功能强大的Django插件&#xff0c;旨在简化和定制Web应用程序中的用户身份验证和管理。本文将深入介绍Django-allauth的核心功能、基本用法以及实际应用场景&#xff0c;通过丰富的示例代码…

AWTK 串口屏开发(1) - Hello World

1. 功能 这个例子很简单&#xff0c;制作一个调节温度的界面。在这里例子中&#xff0c;模型&#xff08;也就是数据&#xff09;里只有一个温度变量&#xff1a; 变量名数据类型功能说明温度整数温度。范围 (0-100) 摄氏度 2. 创建项目 从模板创建项目&#xff0c;将 hmi/…

网络运维与网络安全 学习笔记2023.12.4

网络运维与网络安全 学习笔记 第三十四天 今日目标 访问存储设备、配置yum源、使用yum管理软件 LAMP部署及测试、systemctl系统控制、SELinux-Firewall防护 访问存储设备 挂载/卸载设备 什么是挂载? 挂载&#xff0c;装载 将光盘/U盘/分区/网络存储等设备装到某个Linux目…

pycharm debug的时候变量显示不出来,一直Collecting data...问题解决

问题描述&#xff1a; 如图所示&#xff1a;一直加载不出来变量&#xff0c;显示Collecting data 解决办法&#xff1a; 在setting中给下图中的选项打勾 这下就可以了。 应该是调试时候有线程冲突&#xff0c;具体我也不太懂。

mysql服务日志打印,时区不对的问题

查资料发现 原来日志的时区和服务器的时区不是一个参数控制的 log_timestamps 单独控制日志的时区 show global variables like log_timestamps;看到默认的是UTC&#xff0c;只需要修改为和系统一致就行 #数据库中直接修改 set global log_timestampsSYSTEM;#配置文件my.cn…

springboot086靓车汽车销售网站

springboot086靓车汽车销售网站 成品项目已经更新&#xff01;同学们可以打开链接查看&#xff01;需要定做的及时联系我&#xff01;专业团队定做&#xff01;全程包售后&#xff01; 2000套项目视频链接&#xff1a;https://pan.baidu.com/s/1N4L3zMQ9nNm8nvEVfIR2pg?pwd…

APP测试基本流程及测试点总结

APP测试基本流程及测试点总结 1 测试流程 1.1 流程图 1.2 测试周期 测试周期可按项目的开发周期来确定测试时间&#xff0c;一般测试时间为两三周&#xff08;即15个工作日&#xff09;&#xff0c;根据项目情况以及版本质量可适当缩短或延长测试时间。 1.3 测试资源 测试任务…

VQVAE

68、VQVAE预训练模型的论文原理及PyTorch代码逐行讲解_哔哩哔哩_bilibili本期视频主要讲解大规模无监督预训练模型之VQVAE的论文原理以及PyTorch代码逐行讲解&#xff0c;希望对大家理解VQVAE以及图像生成有帮助。, 视频播放量 9920、弹幕量 80、点赞数 485、投硬币枚数 322、收…

Linux:dockerfile编写搭建tomcat练习(9)

我使用的httpyum仓库 本地使用了5个文件&#xff0c;tomcat使用的官网解压直接用的包】 Dockerfile 主配置文件 基于centos基础镜像 jdk1.8.0_91 java环境 run.sh 启动脚本 centos.repo 仓库文件 tomcat 源码包 vim Dockerfile写入FROM centos MAINTAINER ta…