【力扣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的作用是跳出本次循环,直接进入下一次循环
相关推荐
星光一影1 分钟前
知识付费系统源码,资源网站,支持pc和h5
mysql·职场和发展·php·创业创新·html5·程序员创富
慕沐.2 分钟前
【算法】冒泡排序的原理及实现
java·算法·排序算法
TracyCoder1233 分钟前
分布式算法(八):一致性哈希——分布式系统的负载均衡利器
分布式·算法·哈希算法
Juan_20128 分钟前
P2865 [USACO06NOV] Roadblocks G 题解
c++·算法·图论·题解
MediaTea15 分钟前
Python 库手册:gc 垃圾回收
java·开发语言·jvm·python·算法
QxQ么么6 小时前
移远通信(桂林)26校招-助理AI算法工程师-面试纪录
人工智能·python·算法·面试
Mz12218 小时前
day05 移动零、盛水最多的容器、三数之和
数据结构·算法·leetcode
SoleMotive.9 小时前
如果用户反映页面跳转得非常慢,该如何排查
jvm·数据库·redis·算法·缓存
念越9 小时前
判断两棵二叉树是否相同(力扣)
算法·leetcode·入门
未可知7779 小时前
软件设计师(上午题4)、面向对象、uml、设计模式
设计模式·职场和发展·uml