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

审计局网站建设管理外贸出口流程图详细

审计局网站建设管理,外贸出口流程图详细,wordpress密码hello,安装了lnmp怎么做网站LeetCode 热题100 | 226. 翻转二叉树 大家好,今天我们来解决一道经典的算法题——翻转二叉树。这道题在 LeetCode 上被标记为简单难度,要求我们翻转一棵二叉树,并返回其根节点。下面我将详细讲解解题思路,并附上 Python 代码实现…

LeetCode 热题100 | 226. 翻转二叉树

大家好,今天我们来解决一道经典的算法题——翻转二叉树。这道题在 LeetCode 上被标记为简单难度,要求我们翻转一棵二叉树,并返回其根节点。下面我将详细讲解解题思路,并附上 Python 代码实现。


题目描述

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

示例:

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

解题思路

翻转二叉树的核心思想是交换每个节点的左右子树。我们可以通过递归或迭代的方式来实现。

核心思想
  1. 递归法

    • 递归地翻转左子树和右子树。
    • 交换当前节点的左右子树。
  2. 迭代法(BFS)

    • 使用队列进行层次遍历,逐层交换每个节点的左右子树。

代码实现

方法 1:递归法
class TreeNode:def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightdef invertTree(root):""":type root: TreeNode:rtype: TreeNode"""if not root:return None# 递归翻转左右子树left = invertTree(root.left)right = invertTree(root.right)# 交换当前节点的左右子树root.left = rightroot.right = leftreturn root
方法 2:迭代法(BFS)
from collections import dequedef invertTree(root):""":type root: TreeNode:rtype: TreeNode"""if not root:return Nonequeue = deque([root])  # 使用队列存储节点while queue:node = queue.popleft()  # 弹出当前节点# 交换当前节点的左右子树node.left, node.right = node.right, node.left# 将左右子节点加入队列if node.left:queue.append(node.left)if node.right:queue.append(node.right)return root

代码解析

递归法
  1. 递归终止条件

    • 如果当前节点为空,返回 None
  2. 递归翻转左右子树

    • 递归地翻转左子树和右子树。
  3. 交换当前节点的左右子树

    • 将当前节点的左子树指向翻转后的右子树,右子树指向翻转后的左子树。
  4. 返回根节点

    • 返回翻转后的二叉树的根节点。
迭代法(BFS)
  1. 初始化

    • 如果根节点为空,直接返回 None
    • 使用队列存储节点,初始时将根节点加入队列。
  2. 遍历队列

    • 弹出当前节点,交换其左右子树。
    • 将当前节点的左右子节点加入队列。
  3. 返回根节点

    • 遍历结束后,返回翻转后的二叉树的根节点。

复杂度分析

  • 时间复杂度:O(n),其中 n 是二叉树的节点数。每个节点被访问一次。
  • 空间复杂度
    • 递归法:O(h),其中 h 是二叉树的高度,递归调用栈的深度为树的高度。
    • 迭代法:O(n),队列的最大空间为树的宽度。

示例运行

示例 1
# 创建二叉树 [4,2,7,1,3,6,9]
root = TreeNode(4)
root.left = TreeNode(2)
root.right = TreeNode(7)
root.left.left = TreeNode(1)
root.left.right = TreeNode(3)
root.right.left = TreeNode(6)
root.right.right = TreeNode(9)# 翻转二叉树
inverted_root = invertTree(root)# 层序遍历输出结果
def levelOrder(root):if not root:return []result = []queue = deque([root])while queue:level_size = len(queue)level_nodes = []for _ in range(level_size):node = queue.popleft()level_nodes.append(node.val)if node.left:queue.append(node.left)if node.right:queue.append(node.right)result.append(level_nodes)return resultprint(levelOrder(inverted_root))  # 输出: [[4], [7, 2], [9, 6, 3, 1]]
示例 2
# 创建二叉树 [2,1,3]
root = TreeNode(2)
root.left = TreeNode(1)
root.right = TreeNode(3)# 翻转二叉树
inverted_root = invertTree(root)# 层序遍历输出结果
print(levelOrder(inverted_root))  # 输出: [[2], [3, 1]]
示例 3
# 创建空二叉树 []
root = None# 翻转二叉树
inverted_root = invertTree(root)# 层序遍历输出结果
print(levelOrder(inverted_root))  # 输出: []

总结

通过递归或迭代的方式,我们可以高效地翻转二叉树。递归法代码简洁,但可能受递归深度限制;迭代法使用队列进行层次遍历,适合处理较大的树。希望这篇题解对你有帮助!如果还有其他问题,欢迎继续提问!

关注我,获取更多算法题解和编程技巧!


文章转载自:

http://BMUIZqj5.qnpyz.cn
http://Hs4gIDRC.qnpyz.cn
http://sp8pLNoO.qnpyz.cn
http://SzxS9JA8.qnpyz.cn
http://IrKR44e3.qnpyz.cn
http://pwQNBFFj.qnpyz.cn
http://U8X6hqJY.qnpyz.cn
http://2KHDtoWD.qnpyz.cn
http://R9lsXdl8.qnpyz.cn
http://skBvuVBp.qnpyz.cn
http://5BCXbjwZ.qnpyz.cn
http://ZAMkjNb5.qnpyz.cn
http://oIMztxKI.qnpyz.cn
http://IegDBnKr.qnpyz.cn
http://NANoCWFm.qnpyz.cn
http://Cu5oI1XA.qnpyz.cn
http://URY56PTv.qnpyz.cn
http://GldrxmvV.qnpyz.cn
http://YqntaF1x.qnpyz.cn
http://xdhwL7Ss.qnpyz.cn
http://pBiLi7VA.qnpyz.cn
http://E4uo4cAa.qnpyz.cn
http://fTjn16N0.qnpyz.cn
http://WEon99BM.qnpyz.cn
http://aiHC6DWH.qnpyz.cn
http://hMArdlsg.qnpyz.cn
http://SZFJiUDT.qnpyz.cn
http://YFGi7fJz.qnpyz.cn
http://yWFBYjKN.qnpyz.cn
http://lGUEchMw.qnpyz.cn
http://www.dtcms.com/wzjs/622210.html

相关文章:

  • 简单的个人网站python做网站源码
  • 汾阳做网站的公司响应式网站建设精英
  • 做一个属于自己的网站做网站系统的销售怎么做
  • 个人网站学生作业化州网络推广
  • 城阳做网站公司临沂 网站推广
  • 四川营销型网站建设WordPress首页可见
  • 国产 做 视频网站湖南中虹羽建设工程有限公司网站
  • 网站制作公司重庆怎么制作自己的小程序
  • 南京微网站建设西咸新区新闻
  • 响应式网站的组成网站建设丿找vx cp5173
  • 玩客云 做网站服务器十大网络游戏
  • 中阔浩潮建设工程有限公司网站深圳软件开发定制公司
  • 阿里云个人网站备案wordpress 邮箱插件
  • 稻香村网站建设做棋牌游戏网站
  • 电商网站建设概念佛山微信网站推广多少钱
  • 浙江做网站公司排名木匠手做网站
  • 网站建设教程无忧源码论坛
  • 网站栏目页面设计广告一般用什么软件
  • 电脑做系统都是英文选哪个网站17网站一起做网店池尾商圈
  • 做商城网站需要的功能深圳定制纸箱
  • 网站上怎么引用视频网站区域名怎么注册吗
  • 网站修改dnsskr搜索引擎入口
  • 备案网站用户名是什么福州专业网站搭建排名
  • 南郊做网站如何自己开一个平台
  • 阿里云服务器做网站djangoapp开发公司倒闭了怎么办
  • 网站域名解析错误怎么办赣州章贡区属于什么风险区
  • 在电商网站上做推广的技巧上海本土互联网公司
  • 海南省住房和城乡建设厅网站顺德小程序开发公司
  • 网站效果图设计思路江苏建设部网站
  • 58同城做网站要钱吗网站建设计入什么费用