码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • LeetCode 热题 HOT 100 第五十八天 226. 翻转二叉树 简单题 用python3求解


    题目地址

    给你一棵二叉树的根节点 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 = []
    输出:[]

    提示:
    树中节点数目范围在 [0, 100] 内
    -100 <= Node.val <= 100

    在这里插入图片描述
    在这里插入图片描述
    解法:递归
    仔细看下题目的输入和输出,输出的左右子树的位置跟输入正好是相反的,于是我们可以递归的交换左右子树来完成这道题。

    演示过程:
    首先,把2和7这两棵子树整体交换
    在这里插入图片描述
    在这里插入图片描述
    其次,把7的左右子树(6和9)交换
    在这里插入图片描述
    把2的左右子树(1和3)交换
    在这里插入图片描述

    其实就是交换一下左右节点,然后再递归的交换左节点,右节点

    根据演示过程我们可以总结出递归的两个条件如下:

    • 终止条件:当前节点为 null 时返回
    • 交换当前节点的左右节点,再递归的交换当前节点的左节点,递归的交换当前节点的右节点

    时间复杂度:每个元素都必须访问一次,所以是O(n)
    空间复杂度:最坏的情况下,需要存放O(h)个函数调用(h是树的高度),所以是O(h)

    代码实现:

    class Solution(object):
    	def invertTree(self, root):
    		"""
    		:type root: TreeNode
    		:rtype: TreeNode
    		"""
    		# 递归函数的终止条件,节点为空时返回
    		if not root:
    			return None
    		# 将当前节点的左右子树交换
    		root.left,root.right = root.right,root.left
    		# 递归交换当前节点的 左子树和右子树
    		self.invertTree(root.left)
    		self.invertTree(root.right)
    		# 函数返回时就表示当前这个节点,以及它的左右子树
    		# 都已经交换完了		
    		return root
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    Git分布式版本控制工具(二)
    Golang起步篇(Windows、Linux、mac三种系统安装配置go环境以及IDE推荐以及入门语法详细释义)
    JavaScript【Array.isArray()、push()/pop()、shift()/unshift()、join()、concat()、reverse() 、slice()】(六)
    【SLAM】IMU预积分的理解、手把手推导(2/4)
    安装VCenter6.7【VCSA6.7(vCenter Server Appliance 6.7) 】
    27.EI文章复现《高比例清洁能源接入下计及需求响应的配电网重构》
    ANR问题分析的一般套路
    剑指Offer 第53题:数字在升序数组中出现的次数
    Nacos高可用集群
    如何快速实现一个可视化看板?
  • 原文地址:https://blog.csdn.net/weixin_40634691/article/details/124974831
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号