【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】

2024-01-04

在这里插入图片描述

???? 算法题 ????

???? 算法刷题专栏 | 面试必备算法 | 面试高频算法 ????
???? 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
???? 作者简介:硕风和炜,CSDN-Java领域新星创作者????,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享????????????
???? 恭喜你发现一枚宝藏博主,赶快收入囊中吧????
???? 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?????????

???? 算法题 ????

在这里插入图片描述

在这里插入图片描述

???? 题目链接

  • 114. 二叉树展开为链表

⛲ 题目描述

给你二叉树的根结点 root ,请你将它展开为一个单链表:

展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
展开后的单链表应该与二叉树 先序遍历 顺序相同。

示例 1:
在这里插入图片描述

输入:root = [1,2,5,3,4,null,6]
输出:[1,null,2,null,3,null,4,null,5,null,6]
示例 2:

输入:root = []
输出:[]
示例 3:

输入:root = [0]
输出:[0]

提示:

树中结点数在范围 [0, 2000] 内
-100 <= Node.val <= 100

进阶:你可以使用原地算法(O(1) 额外空间)展开这棵树吗?

???? 求解思路&实现代码&运行结果


⚡ 二叉树 + 递归

???? 求解思路
  1. 我们可以先通过先序遍历,把答案收集起来,然后再次遍历,将收集的答案连接起来。
  2. 但是,需要注意的是,这样的解法能通过,但是空间复杂度达到了O(n),所以,题目当中也说明了,希望可以使用O(1)的空间解决这个问题。具体求解思路参考题解如下: 详细通俗的思路分析,多解法
  3. 实现代码如下所示:
???? 实现代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    
    List<TreeNode> list=new ArrayList<>();
    
    public void flatten(TreeNode root) {
        dfs(root);
        int n=list.size();
        for(int i=1;i<n;i++){
            TreeNode pre=list.get(i-1),cur=list.get(i);
            pre.left=null;
            pre.right=cur;
        }
    }

    public void dfs(TreeNode root){
        if(root==null) return;
        list.add(root);
        dfs(root.left);
        dfs(root.right);
    }
}
???? 运行结果

在这里插入图片描述


???? 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】 的相关文章

随机推荐

  • 解决华为云开放的端口调不通的问题,以18888端口为例

    1 查看监听的端口 netstat ntlp 可以看到nginx等进程正在监听的端口 这些接口都需要通过华为云安全组以及防火墙同时开启接口才能生效 2 查看防火墙是否开启 firewall cmd state 如果没开启 记得开启 syst
  • DIY 云成本优化的5大挑战

    外星人 黑暗骑士 帝国反击战 在 Incredibuild 如果有一样东西我们喜欢 那就是我们的话题永远有续集 我们将针对云端优化推出一个更深入的续集 但这一次我们谈论的是云成本优化 采用 DIY 的方式 如果你还不确定什么是云端优化 请查
  • 民安智库(第三方满意度调研公司):满意度调查,选择适合的数据分析方法

    满意度调查是企业了解客户对其产品或服务满意程度的重要工具 而选择适合的数据分析方法则是解读调查结果的关键步骤 不同的数据分析方法可以提供不同的洞察和见解 帮助企业更好地理解客户需求 优化产品和服务 本文将分享民安智库 北京第三方绩效管理评估
  • 最佳的10款App安全测试工具

    移动互联网时代 我们的生活和工作深受 App 影响 伴随移动 App 的广泛应用 App 安全日益重要 本文介绍了 App 开发可能用到的安全测试工具 当今 全球移动用户大约超过37亿 Google Play 上大约有 220 万个 App
  • Qt 连接 Mysql

    Linux下安装mysql及qt连接 liunx下安装mysql及qt链接 CSDN博客
  • 服务器经常出现自动重启怎么办

    服务器自动重启是一个复杂且常见的问题 可能由多种原因引起 从硬件故障到软件问题 从电源问题到散热问题 每一个环节都可能成为服务器的杀手 在处理此类问题时 需要我们有一套完整的策略和方案 以便快速准确地定位并解决问题 1 硬件检查 首先 我们
  • 医疗保健科技公司遭遇网络攻击,预计影响 450 万客户

    Bleeping Computer 网站消息 美国医疗保健技术公司 HealthEC LLC 遭遇一次严重网络安全事件 约 450 万客户的敏感信息被泄露 这一数字占据了其注册会员的一半以上 HealthEC 提供的人口健康管理 PHM 平
  • Linux 命令之 dpkg 的简单使用

    查询已安装的软件包及其依赖关系 dpkg s name
  • CMake中引入第三方库

    CMake中 如果我们需要引入第三方库 首先想到的是用find package函数 的确 如果我们引入的第三方库是一些比较标准的库如OpenCV可以用下面的代码 set OpenCV DIR xxxx xxxx目录包含OpenCVConfi
  • 软件测试开发/全日制丨Web端测试—JavaScript讲解 学习笔记

    本文转自测试人社区 霍格沃兹测试开发学社学员笔记 原文链接 https ceshiren com t topic 29440 一 简介 JavaScript 是脚本语言 一种轻量级的编程语言 是可插入 HTML 页面的编程代码 插入 HTM
  • 思科认证 | CCIE在线学习平台推荐!

    CCIE作为思科认证的 最高级别 备受网络专业人士推崇 那么CCIE认证 难不难 想要学习思科认证 是否有在线学习平台可以推荐 如果拿到了CCIE证书 证书会不会过期 如果会 是否有重认证的必要 01 CCIE网络工程师考试难吗 CCIE考
  • bokeh,一个超强的 Python 库详解

    概要 数据可视化在数据分析和报告中扮演着关键角色 而Python的Bokeh库为创建交互式 具有吸引力的可视化图表提供了强大的工具 本文将介绍Bokeh的基本概念 安装方法以及详细的示例代码 以帮助大家了解如何使用Bokeh创建出色的数据可
  • 开发&测试必须知道的 10种 常见软件架构模式

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 1k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 全国(山东、安徽)职业技能大赛--信息安全管理与评估大赛题目+答案讲解——操作系统取证

    博主介绍 博主介绍 大家好 我是 hacker routing 很高兴认识大家 主攻领域 渗透领域 应急响应 python VulnHub靶场复现 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论 一起进步 文末
  • Python 微服务架构指南

    概要 微服务架构作为一种设计风格 它将应用程序构建为一套小服务的集合 每个服务实现特定的业务功能 这些服务可以独立部署 扩展并围绕特定业务能力构建 Python 凭借其简洁易读的语法和强大的库生态系统成为实现微服务的受欢迎选择 本文将详细介
  • 40个高质量VUE毕设项目分享【源码+论文】(三)

    文章目录 前言 题目1 基于SSM的婚纱摄影网站 br 题目2 基于SSM的家教应聘招聘系统 br 题目3 基于SSM的家庭食谱管理系统 br 题目4 基于SSM的驾校预约管理系统 br 题目5 基于SSM的教师工
  • Ubuntu18.04 升级Ubuntu20.04

    文章目录 背景 升级方法 遇到的问题 背景 因项目环境需要 欲将Ubuntu18 04升级至Ubuntu20 04 参考网上其他小伙伴的方法 也遇到了一个问题 特此记录一下 希望能帮助其他有同样问题的小伙伴 升级方法 参考 第十五章 Ubu
  • 智康护精神病人体征监测系统

    智康护精神病人体征监测系统是一种针对精神病人的监测系统 旨在通过持续 准确地监测患者的生理和心理指标 提供有效的辅助管理和干预手段 以下是对该系统的介绍 实施背景 精神疾病对患者和社会都带来了巨大的负担 及时监测患者体征可以提供重要的信息
  • 【openlayers-6】控件

    1 视图跳转控件 const ZoomToExtent new ol control ZoomToExtent extent 116 30 120 40 map addControl ZoomToExtent 2 放大缩小控件 const
  • 【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】

    算法题 算法刷题专栏 面试必备算法 面试高频算法 越难的东西 越要努力坚持 因为它具有很高的价值 算法就是这样 作者简介 硕风和炜 CSDN Java领域新星创作者 保研 国家奖学金 高中学习JAVA 大学完善JAVA开发技术栈 面试刷题