【刷题笔记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;
    }
}
相关推荐
咸鱼加辣15 小时前
“刻意强调” O(1)
数据结构·算法
南烟斋..15 小时前
Linux进程管理完全指南:创建、终止、回收与替换
linux·算法
阿蒙Amon15 小时前
JavaScript学习笔记:14.类型数组
javascript·笔记·学习
点我头像干啥15 小时前
机器学习算法之动量法:优化梯度下降的“惯性”策略
人工智能·神经网络·算法·机器学习
XFF不秃头15 小时前
力扣刷题笔记-下一个排列
c++·笔记·算法·leetcode
Lv117700815 小时前
Visual Studio中Array数组的常用查询方法
笔记·算法·c#·visual studio
hn小菜鸡15 小时前
LeetCode 1306.跳跃游戏III
算法·leetcode·游戏
Swift社区15 小时前
LeetCode 450 - 删除二叉搜索树中的节点
算法·leetcode·职场和发展
长安er15 小时前
LeetCode 46/51 排列型回溯题笔记-全排列 / N 皇后
笔记·算法·leetcode·回溯·递归·n皇后
天赐学c语言15 小时前
12.16 - 全排列 && C语言中声明和定义的区别
c++·算法·leecode