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

力扣226. 翻转二叉树(DFS的两种思路)

Problem: 226. 翻转二叉树

文章目录

  • 题目描述
  • 思路
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路

涉及二叉树的递归解法时往往需要考虑两种思路:

1.在递归遍历时执行题目需要的具体要求;
2.将一个大问题分解为多个小子问题

具体到本体:
思路1:遍历

先序遍历+基本的交换操作

思路2:问题分解

将翻转一棵二叉树分解为翻转根节点的左右子树,再分解为翻转左右子树的左右子树…一直分解到叶子节点时,再在回退的过程中执行交换操作,即需要利用到二叉树的后序遍历

复杂度

思路1:
时间复杂度:

O ( n ) O(n) O(n);其中 n n n为二叉树节点的个数

空间复杂度:

O ( n ) O(n) O(n)

思路2:
时间复杂度:

O ( n ) O(n) O(n)

空间复杂度:

O ( n ) O(n) O(n)

Code

思路1:

class Solution {/*** Invert Binary Tree(Recursive traversal)** @param root The root node of binary tree* @return TreeNode*/public TreeNode invertTree(TreeNode root) {if (root == null) {return null;}traverse(root);return root;}/*** Recursive implementation function** @param root The root node of binary tree*/private void traverse(TreeNode root) {if (root == null) {return;}TreeNode temp = root.left;root.left = root.right;root.right = temp;traverse(root.left);traverse(root.right);}
}

思路2:

class Solution {/*** Invert Binary Tree(Break down the problem)** @param root The root node of binary tree* @return TreeNode*/public TreeNode invertTree(TreeNode root) {if (root == null) {return null;}TreeNode leftNode = invertTree(root.left);TreeNode rightNode = invertTree(root.right);root.left = rightNode;root.right = leftNode;return root;}
}

相关文章:

  • 开源模型应用落地-模型量化-Qwen1.5-7B-Chat-GPTQ-Int8(一)
  • 初见flyway
  • MongoDB 和 MySQL 的对比
  • Flutter 页面布局 Flex Expanded弹性布局
  • 谷歌上架,个人号比企业号好上?“14+20”封测如何解决,你知道了吗
  • 基于RV1126的AI网络摄像机AHD、CVBS、HDMI接口的区别有哪些?支持8路AHD摄像头,支持AI实时分析
  • Python-温故知新
  • 2024上海国际化工自动化仪器仪表展览会
  • 数据结构_栈在括号匹配中的应用_代码
  • 使用位掩码的权限设计
  • 前端实现打印功能
  • Nginx(负载均衡,反向代理)
  • [实用技巧]Unity中,Sprite和SpriteRenderer的实用小贴士
  • 汽车标定技术(二十一)--英飞凌TC3xx的OLDA怎么玩?(2)
  • Python 造数据神器Faker
  • [ JavaScript ] 数据结构与算法 —— 链表
  • Laravel核心解读--Facades
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • MQ框架的比较
  • 不上全站https的网站你们就等着被恶心死吧
  • 跨域
  • 那些年我们用过的显示性能指标
  • 少走弯路,给Java 1~5 年程序员的建议
  • 什么软件可以剪辑音乐?
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 一天一个设计模式之JS实现——适配器模式
  • postgresql行列转换函数
  • 大数据全解:定义、价值及挑战
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • #162 (Div. 2)
  • #android不同版本废弃api,新api。
  • (09)Hive——CTE 公共表达式
  • (rabbitmq的高级特性)消息可靠性
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (十六)Flask之蓝图
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转) Android中ViewStub组件使用
  • (转)Linux下编译安装log4cxx
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .Net Core中Quartz的使用方法
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .Net 执行Linux下多行shell命令方法
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .skip() 和 .only() 的使用
  • /tmp目录下出现system-private文件夹解决方法
  • ??myeclipse+tomcat
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [20180129]bash显示path环境变量.txt
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析