当前位置: 首页 > news >正文

用java写一个二叉树翻转

class TreeNode {int val;TreeNode left, right;TreeNode(int val) {this.val = val;left = right = null;}
}public class BinaryTree {TreeNode root;// 递归翻转二叉树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;return root;}// 测试示例public static void main(String[] args) {BinaryTree tree = new BinaryTree();tree.root = new TreeNode(1);tree.root.left = new TreeNode(2);tree.root.right = new TreeNode(3);tree.root.left.left = new TreeNode(4);tree.root.left.right = new TreeNode(5);System.out.println("原始二叉树:");tree.printTree(tree.root);// 翻转二叉树tree.root = tree.invertTree(tree.root);System.out.println("\n翻转后的二叉树:");tree.printTree(tree.root);}// 打印二叉树(中序遍历)void printTree(TreeNode node) {if (node == null) {return;}printTree(node.left);System.out.print(node.val + " ");printTree(node.right);}
}

代码定义了一个简单的二叉树节点类 TreeNode,以及一个二叉树类 BinaryTree。其中 invertTree 方法用于翻转二叉树,通过递归的方式对每个节点进行左右子树的翻转。在 main 方法中,创建了一个简单的二叉树,并进行了翻转操作,最后打印出翻转后的二叉树结果。

相关文章:

  • 如何获得一个Oracle 23ai数据库(vagrant box)
  • webpack总结16--webpack入门学习
  • 如何在 Ubuntu 14.04 上使用 Iptables 实现基本防火墙模板
  • 栈实现四则运算
  • 视频讲解|基于模型预测算法的含储能微网双层能量管理模型【mpc】
  • C++初学者指南第一步---12.引用
  • 破碎的像素地牢探险:游戏分享
  • Python爬虫学习 | Scrapy框架详解
  • 逆向学习COM篇:通过注册表管理COM组件
  • 9. 文本三剑客之awk
  • 【设计模式之模板方法模式 -- C++】
  • 模拟面试三
  • spring-websocket实现(一)
  • TPS、QPS、CPS、PV和UV
  • 『FPGA通信接口』LVDS接口(4)LVDS接收端设计
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • Git初体验
  • JavaScript服务器推送技术之 WebSocket
  • ng6--错误信息小结(持续更新)
  • PAT A1120
  • PHP那些事儿
  • SQLServer之索引简介
  • Vue学习第二天
  • 关于 Cirru Editor 存储格式
  • 简单数学运算程序(不定期更新)
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 突破自己的技术思维
  • 在Mac OS X上安装 Ruby运行环境
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • # wps必须要登录激活才能使用吗?
  • # 达梦数据库知识点
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #传输# #传输数据判断#
  • $.ajax()方法详解
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (day 12)JavaScript学习笔记(数组3)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)nsfocus-绿盟科技笔试题目
  • .ai域名是什么后缀?
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • .skip() 和 .only() 的使用
  • @DataRedisTest测试redis从未如此丝滑
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法