【力扣100】226.翻转二叉树

添加链接描述

python 复制代码
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        if not root:
            return root

        root.left,root.right=self.invertTree(root.right),self.invertTree(root.left)

        return root

思路:

  1. 对于这种左右对称或者一层一层的算法,首先想到递归
  2. 首先可以先写成这样,燃火再做剪枝:因为发现不管是否只有一个单独节点,都是可以被交换的
  3. 然后python3的独特简便交换机制:a , b = b , a


非递归做法

python 复制代码
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        q=collections.deque()
        q.append(root)

        while q:
            cur=q.popleft()
            if not cur:
                continue
            cur.left,cur.right=cur.right,cur.left
            q.append(cur.left)
            q.append(cur.right)

        return root

思路:

  1. 使用队列层序遍历二叉树
  2. continue的作用是跳出本次循环,直接进入下一次循环
相关推荐
夊6 小时前
C语言第十一课:指针(五)
算法
小师兄吃牛肉6 小时前
C语言指针进阶全解析
java·c语言·算法
梦帮科技6 小时前
vLLM / TensorRT-LLM 极限推理:PagedAttention 细粒度物理页表管理与连续批处理(Continuous Batching)实战
数据结构·人工智能·分布式·python·深度学习·算法·vllm
JAVA面经实录9176 小时前
线上故障标准处理流程【完整版|面试背诵+生产落地】
java·面试·职场和发展
yuanxi2006 小时前
青海共和百万千瓦光伏光热项目并网发电:大客户销售如何用价值力抓住能源大单
大数据·职场和发展·能源·创业创新·学习方法
做运维的阿瑞7 小时前
多表查询基础:INNER JOIN、LEFT JOIN、RIGHT JOIN
数据库·sql·mysql·算法
大侠归来8 小时前
C语言素数判断:从入门到进阶
java·c语言·算法
v:PLLucky208 小时前
农作物病虫害检测识别系统
深度学习·scrapy·算法·百度·微信公众平台
朝朝辞暮i8 小时前
C++ 第一阶段总结:从零基础到 ROS2 前置语法
开发语言·c++·算法
H.莓飛8 小时前
【数据结构】链表_OJ题
linux·数据结构·算法·链表