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

LeetCode热题100--226. 翻转二叉树--简单

1. 题目

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

示例 1:
在这里插入图片描述
输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

示例 2:
在这里插入图片描述
输入:root = [2,1,3]
输出:[2,3,1]

示例 3:
输入:root = []
输出:[]

2. 题解

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode invertTree(TreeNode root) {if(root == null){return null;}TreeNode tmp = root.right;root.right = root.left;root.left = tmp;invertTree(root.left);invertTree(root.right);return root;}
}

3. 解析

  1. public TreeNode invertTree(TreeNode root): 这是主方法,接收一个类型为TreeNode的参数root。这个参数表示二叉树的根节点。

  2. if(root == null){ return null; }: 如果输入的根节点(也就是整个二叉树)不存在,那么返回null。这是递归调用结束的基本情况。

  3. TreeNode tmp = root.right;: 这一行创建了一个临时变量tmp来保存原来的右子树。这是因为我们稍后需要将左子树移到右边(反转),所以需要先保存下来。

  4. root.right = root.left;: 这一行将根节点的右孩子指针指向左子树。我们在执行这个操作之前已经将原来的右子树保存在tmp中了,因此我们可以安全地将其赋值给新的右子树位置。

  5. root.left = tmp;: 最后,我们将根节点的新左子树设置为我们刚刚保存的原始右子树(现在位于tmp中)。

  6. invertTree(root.left); 和 invertTree(root.right);: 然后我们递归地对左子树和右子树调用invertTree()方法,以确保整个二叉树都被反转了。如果某个子树为空(意味着这个分支的原始树是叶节点或空树),那么这两个函数调用将简单地返回null,这是我们期望的结果。

  7. return root;: 最后,返回翻转后的根节点。在递归过程中,这个值会被层层向上传递,最终成为整棵树的新根节点并作为函数的输出返回。

http://www.dtcms.com/a/337088.html

相关文章:

  • SSH 登录失败(publickey)问题总结
  • 【具身智能】2025:具身智能机器人量产元年——AI与物理世界的融合革命
  • UE TCP通信
  • FTP服务器
  • 【Python面试题】写一个用元类(metaclass)实现API接口自动注册的Demo。以及装饰器在项目中典型应用场景。
  • Unity进阶--C#补充知识点--【Unity跨平台的原理】Mono与IL2CPP
  • 继承中的向上转型、向下转型与动态绑定的深入解析
  • 【案例分享】AI使用分享|如何运用 GPT完成小任务并提升效率 —— Prompt 与案例整理
  • 跨平台笔记协作:cpolar 提升 Obsidian 知识库共享效率方案
  • 基于ssm jsp中学校园网站源码和答辩PPT论文
  • vue的双向数据绑定
  • 哪里找最新AI工具官网?如何快速对比ChatGPT替代品?AI工具导航指南 - AIbase
  • 基于Spring Boot+Vue的社区便民服务平台 智慧社区平台 志愿者服务管理
  • [矩阵置零]
  • 快速搭建项目(若依)
  • 【JavaEE】(16) Spring Boot 日志
  • 重温k8s基础概念知识系列四(服务、负载均衡和联网)
  • [免费]基于Python的全国气象数据采集及可视化大屏系统(Flask+request库)【论文+源码+SQL脚本】
  • Android Coil3视频封面抽取封面帧存Disk缓存,Kotlin(2)
  • 你好星识内测,未来是人与AI共创的时代
  • [特殊字符] 什么是 Linux?[特殊字符] 什么是 Shell?[特殊字符] 什么是 Bash? [特殊字符]Linux、Shell、Bash 的关系?
  • 特种行业许可证识别技术:通过图像处理、OCR和结构化提取,实现高效、准确的许可证核验与管理
  • 通过PhotoShop将多张图片整合为gif动画
  • npm设置了镜像 pnpm还需要设置镜像吗
  • Ps 2025 图像编辑 Photoshop(Mac中文)
  • 前端面试通关:Cesium+Three+React优化+TypeScript实战+ECharts性能方案
  • PDF处理控件Aspose.PDF教程:将 PNG 合并为 PDF
  • Arkts加载网页url的pdf发票黑屏问题
  • vscode wsl解决需要用别的用户调试的问题
  • 国产化Excel处理组件Spire.XLS教程:使用 C# 从数据库导出数据到 Excel(含 SQL 示例)