【leetcode】114. 二叉树展开为链表

文章目录

    • 题目
    • 题解
      • 1. 递归
      • 2. 迭代
      • 3. 右指针重排,始终将右子树添加到左子树的最右

题目

114. 二叉树展开为链表

在这里插入图片描述

题解

1. 递归

  1. 先序遍历
  2. 然后将数组操作
for i in range(1, len(res)):prev, curr = res[i - 1], res[i]prev.left = Noneprev.right = curr
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def flatten(self, root):""":type root: Optional[TreeNode]:rtype: None Do not return anything, modify root in-place instead."""res = []def dfs(node):if node is None:returnres.append(node)dfs(node.left)dfs(node.right)dfs(root)for i in range(1, len(res)):prev, curr = res[i - 1], res[i]prev.left = Noneprev.right = curr

2. 迭代

  1. 先序遍历
  2. 与1方法一样
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def flatten(self, root):""":type root: Optional[TreeNode]:rtype: None Do not return anything, modify root in-place instead."""if not root:return rootres = []stack = []stack.append(root)while stack:node = stack.pop()res.append(node)if node.right:stack.append(node.right)if node.left:stack.append(node.left)for i in range(1, len(res)):prev, curr = res[i - 1], res[i]prev.left = Noneprev.right = curr

3. 右指针重排,始终将右子树添加到左子树的最右

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def flatten(self, root):""":type root: Optional[TreeNode]:rtype: None Do not return anything, modify root in-place instead."""cur = rootwhile cur:if cur.left:pre = cur.leftwhile pre.right:pre = pre.rightpre.right = cur.rightcur.right =cur.leftcur.left = Nonecur = cur.right

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/95020.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vibe Coding、AI IDE/插件

概述 Vibe Coding,氛围编程,AI辅助编程,三剑客: Google Gemini:OpenAI GPT:Anthropic Claude: IDE Cursor 基于VS Code开发。 特性: AI驱动的代码生成:输入想要的…

Unity高级UI拖动控制器教程

在游戏开发过程中,UI组件的拖动功能是一个常见的需求。特别是在需要实现拖动、边界检测、透明度控制以及动画反馈等功能时,编写一个高级UI拖动控制器将非常有用。在本文中,我们将创建一个支持多种Canvas模式和更精确边界检测的高级UI拖动控制…

零基础上手:Cursor + MCP 爬取 YouTube 视频数据

前言 大模型与 AI 应用越来越普及的今天,实时、稳定地获取网络数据变得尤为重要。无论是做内容分析、趋势研究还是自动化任务,爬取和处理数据始终是绕不开的一环。 传统爬虫往往面临封禁、验证码、动态渲染等难题,而 Bright Data MCP&#x…

frp 一个高性能的反向代理服务

文章目录项目概述核心特性系统架构快速开始1. 下载安装2. 服务端快速配置3. 客户端快速配置4. 验证连接配置文件说明代理类型TCP/UDP 代理HTTP/HTTPS 代理安全代理 (STCP/SUDP)P2P 代理 (XTCP)插件系统静态文件服务HTTP/SOCKS5 代理协议转换使用场景远程办公Web 服务发布游戏服…

Android -第二十一次技术总结

一、activity与Fragment的通信有哪些?使用接口进行通信的逻辑与代码示例使用接口通信的核心是解耦,通过定义一个接口作为通信契约,让 Fragment 不依赖于具体的 Activity 类型。1. 定义通信接口(在 Fragment 内)首先&am…

【算法】78.子集--通俗讲解

通俗易懂讲解“子集”算法题目 一、题目是啥?一句话说清 给你一个不含重复元素的整数数组,返回所有可能的子集(包括空集和它本身)。 示例: 输入:nums = [1,2,3] 输出:[[], [1], [2], [1,2], [3], [1,3], [2,3], [1,2,3]] 二、解题核心 使用回溯法(递归)或位运算来…

Cherrystudio的搭建和使用

1、下载和安装 Cherry Studio 官方网站 - 全能的 AI 助手 2、配置LLM 3、聊天助手 3.1 添加和编辑助手 3.2 选择LLM 3.3 对话聊天 4、配置MCP 4.1 安装MCP执行插件 4.2 安装 node和npm Node.js — Download Node.js npm -v 10.9.3 node -v v22…

基于Matlab结合肤色检测与卷积神经网络的人脸识别方法研究

近年来,随着人工智能与计算机视觉技术的发展,人脸识别在人机交互、安防监控、身份认证等领域得到了广泛应用。本文提出了一种基于 MATLAB 平台,结合 肤色检测与卷积神经网络(CNN) 的人脸识别方法。该方法首先利用肤色模…

在八月点燃AI智慧之火:CSDN创作之星挑战赛开启灵感盛宴

在八月点燃AI智慧之火:CSDN创作之星挑战赛开启灵感盛宴八月骄阳似火,智能时代的技术热情同样炽热。在这个充满创新活力的季节,「AIcoding八月创作之星挑战赛」正式拉开帷幕,为CSDN的创作者们打造一个展示才华、碰撞灵感的专业舞台…

解密 Vue 3 shallowRef:浅层响应式 vs 深度响应式的性能对决

📖 概述 shallowRef() 是 Vue 3 中的一个组合式 API 函数,用于创建浅层响应式引用。与 ref() 不同,shallowRef() 只在其 .value 被直接替换时触发响应式更新,不会深度监听对象内部属性的变化。 🎯 基本概念 什么是 sh…

Linux进程间通信(IPC)深入解析

Linux进程间通信(IPC)深入解析 1 概述 Linux 进程间通信 (Inter-Process Communication, IPC) 是不同进程之间交换数据与同步操作的机制。现代 Linux 内核提供了多种 IPC 方式,从传统的管道和 System V IPC 到现代的套接字和 D-Bus&#xff0…

TensorFlow-GPU版本安装

前言: (1)因项目需求,需要安装TensorFlow-GPU版本,故本文在此记录安装过程。 (2)有注释,优先看注释 (3)本文所使用的GPU为NVIDIA GeForce RTX 5080 Laptop GP…

Elasticsearch 索引字段删除,除了 Reindex 重建索引还有没有别的解决方案?

unsetunset1、问题来源unsetunset在生产环境维护 Elasticsearch 集群的过程中,经常会遇到这样的场景:业务需求变更导致某些字段不再使用,或者早期设计时添加了一些冗余字段,现在需要清理掉。最近球友在公司的一个项目中就遇到了这…

Ubuntu虚拟机磁盘空间扩展指南

这是一份详细且易于理解的 Ubuntu 虚拟机磁盘空间扩展指南。本指南涵盖了两种主流虚拟机软件(VirtualBox 和 VMware)的操作步骤,并分为 “扩展虚拟磁盘” 和 “在 Ubuntu 内部分配新空间” 两大部分。重要提示:在进行任何磁盘操作…

教程1:用vscode->ptvsd-创建和调试一个UI(python)-转载官方翻译(有修正)

vscode用python开发maya联动调试设置 3dsMax Python开发环境搭建 3文联动之debugpy调试max‘python. 3文联动之socket插槽注入max‘python 本教程是max主动接收创建代码的方式(预先运行界面,通过按钮主动读取py脚本,执行断点)&…

龙迅#LT7621GX适用于两路HDMI2.1/DP1.4A转HDMI2.1混切应用,分辨率高达8K60HZ!

1. 描述LT7621GX是一款高性能两路HDMI2.1/DP1.4转HDMI2.1混合开关芯片,用于显示应用。 HDCP RX作为HDCP中继器的上游,可以与其他芯片的HDCP TX配合,实现中继器功能。 对于HDMI2.1输入,LT7621GX可以配置为3/4通道。自适应均衡使其适…

【Ruoyi 解密 - 12. JDK17的新特性】------ 从Java 8 到 Java 17:向Scala看齐的“简洁革命”,同宗JVM下的效率狂飙

从Java 8到Java 17:抄作业Scala?JVM同宗下的Ruoyi开发效率狂飙! 上一篇我们聊到JDK 17对Python的柔性借鉴,可深入用下来才发现——这哪够!对Ruoyi开发者来说,JDK 17真正的“王炸”,是把同根JVM的…

大模型 “轻量化” 之战:从千亿参数到端侧部署,AI 如何走进消费电子?

一、大模型 “轻量化” 的行业背景在 AI 技术蓬勃发展的当下,大模型已然成为行业焦点。从 GPT-4 突破万亿级参数量,到 DeepSeek-R1 迈向千亿参数规模,大模型的参数扩张趋势显著。然而,这种规模的增长也带来了诸多挑战。以 GPT-4 为…

香港电讯与Microsoft香港推出新世代“Teams Phone” 解决方案

香港电讯成为香港首家提供 “Microsoft Operator Connect”的本地电讯营运商1 香港电讯(股份代号:6823)【香港 • 2025年2月11日】 – 香港电讯宣布与 Microsoft 香港合作推出 “Operator Connect”,成为全港首家为企业客户提供全…

PlantUML描述《分析模式》第3章观察和测量(2)

lantUML描述《分析模式》第2章“当责”(1) PlantUML描述《分析模式》第2章“当责”(2) PlantUML描述《分析模式》第3章观察和测量(1) 原图3.8 EA绘制 图3.8 递归关系用于记录证据和评估。 PlantUML sta…