代码编织梦想

翻转二叉树

难度:简单

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

递归

思路:

这是一道很经典的二叉树问题。显然,我们从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。如果当前遍历到的节点 root \textit{root} root 的左右两棵子树都已经翻转,那么我们只需要交换两棵子树的位置,即可完成以 root \textit{root} root 为根节点的整棵子树的翻转。

# 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 root is None:
            return root
        self.invertTree(root.left)
        self.invertTree(root.right)
        temp = root.left
        root.left = root.right
        root.right = temp
        return root

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/invert-binary-tree

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45616285/article/details/128688852

本周leetcode刷题总结!(二叉树)-爱代码爱编程

本周小结 发现大家周末的时候貌似都不在学习状态,周末的文章浏览量和打卡情况照工作日差很多呀,可能是本周日是工作日了,周六得好好放松放松,哈哈,理解理解,但我还不能不更啊,还有同学要看呢。 所以呢,周日我做一个针对本周的打卡留言疑问以及在刷题群里的讨论内容做一下梳理吧。,这样也有助于大家补一补本周的内容,消化消化。 注意这个周末总结和系列总结还是不一样

【刷题打卡】day10-分治法-爱代码爱编程

从现在开始每天至少刷一道题。 题库:lintcode 有些题目链接打不开,需要权限,那大家就去九章算法参考答案里找找。 Invert Binary Tree 题目链接 难度:easy 算法:分治 解题思路 采用分治的思想,先通过递归的方式把左右子树各自翻转后,再将根节点左右子树翻转一下。 注意:这里说不能用递归。不用递归就徒手写栈吧。反正递归也是

2021-11-12每日刷题打卡-爱代码爱编程

一、Leetcode-144:二叉树的前序遍历 1.1 问题描述 1.2 问题分析 迭代: 根据前序遍历的定义: DLR, 所以是先打印根结点,再打印左子树, 右子树 而迭代实现, 需要去模拟栈, 根据栈后进先出的特点, 所以先进右子树, 再进左子树, 如下图: 1.3 问题解决 /** * Definition for a bin

2021-11-19每日刷题打卡-爱代码爱编程

2021-11-19每日刷题打卡 力扣——每日一题 397. 整数替换 给定一个正整数 n ,你可以做如下操作: 如果 n 是偶数,则用 n / 2替换 n 。 如果 n 是奇数,则可以用 n + 1或n - 1替换 n 。 n 变为 1 所需的最小替换次数是多少? 示例 1: 输入:n = 8 输出:3 解释:8 -> 4 ->

2021-12-01每日刷题打卡-爱代码爱编程

2021-12-01每日刷题打卡 剑指 Offer 09. 用两个栈实现队列 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: [“CQueue”,“app

2022-01-26每日刷题打卡-爱代码爱编程

2022-01-26每日刷题打卡 飞书——每日一题 494. 目标和 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 ‘+’ 或 ‘-’ ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2

【打卡第232道】【二叉树】【leetCode高频】:226. 翻转二叉树-爱代码爱编程

1、题目描述 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 2、算法分析 思路一: ①翻转根结点的左右孩子结点 ②分别递归左右孩子结点的子孩子结点   思路二: 使用BFS交换结点 直接看代码 3、代码实现 方法一:递归 /** * Definition for a binary

算法打卡Day22_leetcode _226.翻转二叉树-爱代码爱编程

每一个匆匆上路的人,都向往着在他乡看到不同寻常的自然历史人文景观。然而,出发之后往往发现,人在路上可能才是最大的收获,因为许多旅游景观只是一个文化碎片,流淌不出真正的文化气息。 Leetcode原题 226.翻转二叉树 思路 我们根据示例可以发现,翻转二叉树,其实就是左右子节点树,相互变化。 方法一 递归 class Solution {

力扣刷题记录40.1-----226. 翻转二叉树_@白圭的博客-爱代码爱编程

目录 一、题目二、代码三、运行结果 一、题目 二、代码 /** * Definition for a binary tree node. * struct TreeNode { *

leetcode60天刷题day15打卡----二叉树_f肆十贰的博客-爱代码爱编程

Leetcode60天刷题Day15打卡----二叉树 二叉树的层序遍历翻转二叉树对称二叉树 二叉树的层序遍历 题目:给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有

代码随想录算法训练营day15|leetcode102二叉树的层序遍历、leetcode226翻转二叉树、leetcode101对称二叉树-爱代码爱编程

Day15打卡! 时长:2h 今日感想:今天主要学习了二叉树层次遍历的思路方法和应用。题目看似简单,实则有很多细节,有时间可以做做其他相似的推荐题目~ Leetcode102 二叉树的层序遍历 题目链接:Leetcode102 二叉树的层序遍历   思路: 需要借用一个辅助数据结构即队列来实现,队列先进先出,符合一层一层遍历的逻辑,而用

day15 | 层序遍历合集 / 226.翻转二叉树 / 101.对称二叉树-爱代码爱编程

文章目录 层序遍历102.二叉树的层序遍历107.二叉树的层序遍历II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的下一个右侧节点指针117.

代码随想录打卡day15|102. 二叉树的层序遍历226. 翻转二叉树101. 对称二叉树-爱代码爱编程

代码随想录打卡day15|102. 二叉树的层序遍历226. 翻转二叉树101. 对称二叉树 102. 二叉树的层序遍历 DFS递归原理: void dfs(TreeNode root) { if (root

421-爱代码爱编程

226. 翻转二叉树 1、递归法 class Solution { public: TreeNode* invertTree(TreeNode* root) { if (root == nul

算法记录day15 | leetcode102.二叉树的层序遍历、226.翻转二叉树、101. 对称二叉树-爱代码爱编程

一、LeetCode102.二叉树的层序遍历 1.题目描述: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]  2.解题思路1:迭代法 首先建立一个队列,将头结点存

【代码随想录算法训练营】第十五天打卡 | 层序遍历, 226.翻转二叉树 (优先掌握递归), 101. 对称二叉树 (优先掌握递归)-爱代码爱编程

代码随想录算法训练营任务安排 二叉树层序遍历 | 广度优先搜索226.翻转二叉树递归法 101.对称二叉树递归法 二叉树层序遍历 | 广度优先搜索 102. 二叉树的层序遍历