【刷题笔记10.6】LeetCode:翻转二叉树

LeetCode:翻转二叉树

一、题目描述

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

二、分析

我们在做二叉树题目时候,第一想到的应该是用 递归 来解决。 仔细看下题目的 输入 和 输出,输出的左右子树的位置跟输入正好是相反的,于是我们可以递归的交换左右子树来完成这道题。

其实就是交换一下左右节点,然后再递归的交换左节点,右节点。

我们可以总结出递归的两个条件如下:

  • 终止条件:当前节点为 null 时返回
  • 交换当前节点的左右节点,再递归的交换当前节点的左节点,递归的交换当前节点的右节点

三、代码实现

java 复制代码
public class Deal13 {
    public TreeNode invertTree(TreeNode root) {
        //1、递归函数的终止条件,节点为null时返回
        if (root == null) {
            return null;
        }

        //2、下面三句是将当前节点的左右子树交换
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;

        //3.1、递归交换当前节点的 左子树
        invertTree(root.left);
        //3.2、递归交换当前节点的 右子树
        invertTree(root.right);

        //4、函数返回时就表示当前这个节点,以及它的左右子树都已经交换完成
        return root;
    }
}
相关推荐
棋子入局2 分钟前
C语言实现消消乐游戏(6)
c语言·算法·游戏
Mem0rin9 分钟前
[Java]排序
java·算法·排序算法
w20180014 分钟前
段永平投资问答录pdf完整版
笔记·pdf
我的征途是星辰大海。21 分钟前
设计模式(学习笔记)(第一章)
笔记·学习·设计模式
弘毅 失败的 mian27 分钟前
STM32 时钟详解
经验分享·笔记·stm32·单片机·嵌入式硬件·嵌入式
qeen8730 分钟前
【算法笔记】差分与经典例题解析
c语言·c++·笔记·学习·算法·差分
kronos.荒35 分钟前
动态规划——整数拆分(python)
python·算法·动态规划
中屹指纹浏览器36 分钟前
2026分布式多账号运营下指纹浏览器集群调度方案
经验分享·笔记
摇滚侠40 分钟前
Java 零基础全套视频教程,面向对象(进阶),笔记 90-103
java·开发语言·笔记
cici1587441 分钟前
基于Koopman模型预测控制的非线性流控制数据驱动框架
算法