【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
英文地址,請注明出處:http://en.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…