当前位置: 首页 > news >正文

剑指 Offer 27. 二叉树的镜像

剑指 Offer 27. 二叉树的镜像

难度:easy\color{Green}{easy}easy


题目描述

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

例如输入:
在这里插入图片描述

镜像输出:
在这里插入图片描述

示例 1:

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

限制:

0<=节点个数<=10000 <= 节点个数 <= 10000<=节点个数<=1000

注意:本题与主站 226 题相同:https://leetcode-cn.com/problems/invert-binary-tree/


算法

(递归)

write here...
根据二叉树镜像的定义,考虑递归遍历(dfs)二叉树,交换每个节点的 左 / 右子节点,即可生成二叉树的镜像。

递归解析:

终止条件: 当节点 root 为空时(即越过叶节点),则返回 null ;

递推工作:

  • 开启递归 左子节点 mirrorTree(root.left) ,并将返回值作为 root 的 左子节点 。
  • 开启递归 左子节点 mirrorTree(root.right) ,并将返回值作为 root 的 右子节点 。

返回值: 返回当前节点 root ;

复杂度分析

  • 时间复杂度O(n)O(n)O(n),其中 nnn 是链表的长度。需要遍历链表一次

  • 空间复杂度 : O(1)O(1)O(1)

C++ 代码

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:TreeNode* mirrorTree(TreeNode* root) {if (!root) return NULL;auto left = mirrorTree(root->left);auto right = mirrorTree(root->right);root->left = right;root->right = left;return root;}
};
http://www.lryc.cn/news/15530.html

相关文章:

  • RPC编程:RPC概述和架构演变
  • 神经网络训练时只对指定的边更新参数
  • Python列表list操作-遍历、查找、增加、删除、修改、排序
  • Python开发-学生管理系统
  • 大数据处理 - Trie树/数据库/倒排索引
  • jjava企业级开发-01
  • 「事务一致性」事务afterCommit
  • 【深度学习编译器系列】2. 深度学习编译器的通用设计架构
  • 图解操作系统
  • 【发版或上线项目保姆级心得】
  • Python数据分析-pandas库入门
  • MacBook Pro 恢复出厂设置
  • googletest 笔记
  • MySQL修改密码的几种方式?
  • 关于画一个句号--基于2022年终总结的反思与分享
  • 学习Flask之三、模板
  • 2023-02-20干活小计:
  • LeetCode_动态规划_困难_1326.灌溉花园的最少水龙头数目
  • mac tcpdump学习
  • 【跟我一起读《视觉惯性SLAM理论与源码解析》】第二章 编程及编译工具
  • 广东望京卡牌科技有限公司,2023年团建活动圆满举行
  • ts语法如何在Vue3中运用?
  • RK3566添加湿度传感器以及浅析hal层
  • 看了这份Java高级笔试宝典覆盖近3年Java笔试中98%高频知识点,反打面试官
  • 从0到1搭建大数据平台之监控
  • 采购评标管理过程是怎样的?有哪些评标标准?
  • 《Vue+Spring Boot前后端分离开发实战》专著累计发行上万册
  • 类与类之间的关系有哪几种?
  • LeetCode 606.根据二叉树创建字符串,102.二叉树的层序遍历和牛客 二叉搜索树与双向链表
  • 02-18 周六 图解机器学习之SMV 第五章5-2