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

翻转二叉树---超全详细解

以下内容是从网站中学习的如果有错误欢迎指正。

翻转一棵二叉树。

思路

我们之前介绍的都是各种方式遍历二叉树,这次要翻转了,感觉还是有点懵逼。

这得怎么翻转呢?

如果要从整个树来看,翻转还真的挺复杂,整个树以中间分割线进行翻转。

可以发现想要翻转它,其实就把每一个节点的左右孩子交换一下就可以了。

关键在于遍历顺序,前中后序应该选哪一种遍历顺序? (一些同学这道题都过了,但是不知道自己用的是什么顺序)

遍历的过程中去翻转每一个节点的左右孩子就可以达到整体翻转的效果。

注意只要把每一个节点的左右孩子翻转一下,就可以达到整体翻转的效果

这道题目使用前序遍历和后序遍历都可以,唯独中序遍历不方便,因为中序遍历会把某些节点的左右孩子翻转了两次!建议拿纸画一画,就理解了

那么层序遍历可以不可以呢?依然可以的!只要把每一个节点的左右孩子翻转一下的遍历方式都是可以的!

递归遍历用前序遍历或者后序遍历都可以,但如果用中序遍历会导致有的子树被翻转两次有的子树不被翻转。

class Solution{//前后序遍历都可以// 中序不行,因为先左孩子交换孩子,再根交换孩子(做完后,右孩子已经变成了原来的左孩子),再右孩子交换孩子(此时其实是对原来的左孩子做交换)public TreeNode invertTree(TreeHode root){if(root == null){return null;}invertTree(root.left);invertTree(root.right);swapChildren(root);return root;}public void swapChildren(TreeNode root){TreeNode temp = root.left;root.left = root.right;root.right = temp;}
}

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

相关文章:

  • AI智能体全球应用调查报告:从“对话”到“做事”的变革
  • Linux网络之----网络编程
  • [Power BI] CALCULATETABLE函数
  • 3494. 酿造药水需要的最少总时间
  • 沐风老师3DMAX科研绘图插件DNA生成器使用方法详解
  • 宁波做网站gs什么是网络营销的职能
  • AI编程工具(Cursor/Copilot/灵码/文心一言/Claude Code/Trae)AI编程辅助工具全方位比较
  • FastGPT入门实战
  • 数据结构笔试核心考点
  • 用python做购物网站万网搜官网
  • 创建qq网站如何做网站流量分析报表
  • Docker实战:从基础镜像到Nginx定制
  • 什么是NoSQL?
  • 北京网站建设公司代理备份整个网站
  • 宁夏做网站建设公司私人订制与定制
  • 在 Ubuntu 下开发鸿蒙应用:理解系统的最佳入口
  • RabbitMQ四种交换机详解
  • 几种最常见的病毒/恶意软件类型
  • PHP计算过去一定时间段内日期范围函数
  • 怎么看网站是什么程序做的产品推广的目的和意义
  • 摄像头软件参数调试详解与实战
  • DB-GPT:AI原生数据应用开发框架解析
  • 论文笔记(九十三)ManipulationNet: Benchmarking
  • AIX 服务器 CPU 长期 90%:从 nmon 画像到 DataStage 僵尸进程的定位与清理
  • 10_基础策略编程实现
  • 服装网站建设前景分析网站 不备案
  • 克隆网站模板网站正在建设中 模板
  • 【完整源码+数据集+部署教程】 葡萄病害检测系统源码和数据集:改进yolo11-CAA-HSFPN
  • deepseekmine2.2.0发布,本地知识库,秒级上传与检索文件,免费试用
  • JavaSE