【力扣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的作用是跳出本次循环,直接进入下一次循环
相关推荐
小白|15 分钟前
OpenHarmony + Flutter 混合开发深度实践:构建支持国密算法(SM2/SM3/SM4)与安全存储的金融级应用
算法·安全·flutter
不能只会打代码15 分钟前
蓝桥杯---垒骰子(Java实现,代码注释,图文讲解)
算法·蓝桥杯·动态规划·垒骰子
数据门徒24 分钟前
《人工智能现代方法(第4版)》 第9章 一阶逻辑中的推断 学习笔记
人工智能·笔记·学习·算法
喜欢吃燃面25 分钟前
算法竞赛之排序算法
c++·学习·算法
北慕阳28 分钟前
(1)八股文 算法
面试·职场和发展
秋深枫叶红28 分钟前
嵌入式第三十篇——数据结构——哈希表
数据结构·学习·算法·哈希算法
Keep__Fighting32 分钟前
【机器学习:决策树】
人工智能·算法·决策树·机器学习·scikit-learn
✎ ﹏梦醒͜ღ҉繁华落℘42 分钟前
编程基础--数据结构
数据结构·算法
小毅&Nora43 分钟前
【后端】【C++】泛型算法:从传统到C++20 Ranges的进化之旅
算法·c++20·泛函算法
ULTRA??1 小时前
最小生成树kruskal算法实现python,kotlin
人工智能·python·算法