【力扣hot100】刷題筆記Day11

前言

  • 科研不順啊......又不想搞了,隨便弄弄吧,多花點時間刷題,今天開啟二叉樹!

94. 二叉樹的中序遍歷 - 力扣(LeetCode)

  • 遞歸

    • # 最簡單遞歸
      class Solution:def inorderTraversal(self, root: TreeNode) -> List[int]:if not root:return []return self.inorderTraversal(root.left) + [root.val] + self.inorderTraversal(root.right)# 通用模板        
      class Solution:def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:res = []  # 收集結果def dfs(root):if not root:  # 訪問到空結點直接返回returndfs(root.left)        # 左res.append(root.val)  # 中dfs(root.right)       # 右dfs(root)return res
  • 迭代

    • 圖和代碼參考王尼瑪題解
    • class Solution:def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:res = []stack = []while stack or root:# 不斷往左子樹方向走,每走一次就將當前節點保存到棧中# 這是模擬遞歸的調用if root:stack.append(root)root = root.left# 當前節點為空,說明左邊走到頭了,從棧中彈出節點并保存# 然后轉向右邊節點,繼續上面整個過程else:temp = stack.pop()res.append(temp.val)root = temp.rightreturn res
  • ?Morris遍歷

    • 過程看官解的動圖
    • cur無左孩子,說明到最左端:
      • 加入結果,cur右移
    • cur有左孩子,說明有前驅,找前驅
      • 前驅無右孩:生成鏈接、cur左移
      • 前驅有右孩:斷開連接,記錄cur結果,cur右移
    • class Solution:def inorderTraversal(self, root: TreeNode) -> List[int]:res = []  # 用于存儲中序遍歷結果的列表cur, prev = root, None  # 初始化當前節點cur和前驅節點prevwhile cur:  # 當前節點cur不為空時循環執行if not cur.left:  # 左子樹為空(到最左端)res.append(cur.val)  # 將當前節點cur的值加入結果列表cur = cur.right  # 將當前節點指向右子樹else:prev = cur.left  # 找到當前節點cur的左子樹的最右節點(前驅)while prev.right and prev.right != cur:prev = prev.rightif not prev.right:  # 如果前驅節點的右孩子為空(添加連接)prev.right = cur  # 將前驅節點的右孩子指向當前節點cur = cur.left  # 將當前節點移動到左子樹else:prev.right = None  # 恢復最右節點右孩子為空res.append(cur.val)  # 將當前節點cur的值加入結果列表cur = cur.right  # 將當前節點移動到右子樹return res  # 返回中序遍歷結果
  • ?標記迭代

    • class Solution:def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:res = []stack = [(0, root)]  # 0表示當前未訪問,1表示已訪問while stack:flag, cur = stack.pop()if not cur: continueif flag == 0:stack.append((0, cur.right))  # 右stack.append((1, cur))        # 中stack.append((0, cur.left))   # 左else:res.append(cur.val)return res
      

二叉樹所有遍歷模板總結

144. 二叉樹的前序遍歷 - 力扣(LeetCode)

145. 二叉樹的后序遍歷 - 力扣(LeetCode)

102. 二叉樹的層序遍歷 - 力扣(LeetCode)

589. N 叉樹的前序遍歷 - 力扣(LeetCode)

后言

  • 今天把以上幾個二叉樹遍歷的題目模板刷熟!這樣后面的題才能信手拈來~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697342.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697342.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697342.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

idea運行項目時右下角彈出“Lombok requires enabled annotation processing”

文章目錄 錯誤描述原因分析解決方式參考 錯誤描述 Lombok requires enabled annotation processing:翻譯過來就是Lombok 需要啟用注釋處理 原因分析 idea安裝了Lombok插件,但有些設置未做。 解決方式 參考 idea配置和使用Lombok

全文搜索的工作原理講解

Elasticsearch全文搜索是一種強大的搜索技術,它基于Lucene構建,能夠處理大規模數據集,提供快速、準確的搜索結果。要充分利用Elasticsearch的全文搜索能力,關鍵在于理解和應用其核心組件:分詞(Tokenization…

【FPGA】高云FPGA之數字鐘實驗->HC595驅動數碼管

高云FPGA之IP核的使用 1、設計定義2、設計輸入2.1 數碼管譯碼顯示2.2 74HC595驅動2.3 主模塊設計 3、分析和綜合4、功能仿真6.1 hex8模塊仿真6.2 HC595模塊 5、布局布線6、時序仿真7、IO分配以及配置文件(bit流文件)的生成8、配置(燒錄&#…

代碼檢測規范和git提交規范

摘要:之前開發的項目,代碼檢測和提交規范都是已經配置好的,最近自己新建的項目就記錄下相關配置過程。 1. ESlint配置 2013年6月創建開源項目,提供一個插件化的JavaScript代碼檢測工具,創建項目是生成的eslintrc.js文…

【算法分析與設計】

📝個人主頁:五敷有你 🔥系列專欄:算法分析與設計 ??穩中求進,曬太陽 題目 編寫一個函數,輸入是一個無符號整數(以二進制串的形式),返回其二進制表達式中數字位…

如何使用Express框架構建一個簡單的Web應用

在這個數字化時代,Web應用的需求越來越多樣化和復雜化。在前端開發領域,Express框架作為一個快速、靈活的Node.js Web應用程序框架,擁有強大的功能和豐富的生態系統,深受開發者們的青睞。本篇博客將帶您一步步探索如何使用Express…

AUTOSAR汽車電子嵌入式編程精講300篇-基于深度學習的車載總線網絡入侵檢測

目錄 前言 國內外研究現狀 汽車 CAN 網絡攻擊現狀 2 汽車 CAN 總線介紹及信息安全問題分析</

MR混合現實情景實訓教學系統在高空作業課堂中的應用

高空作業是一項高風險的工作&#xff0c;對于從業者來說&#xff0c;不僅需要具備專業的技能&#xff0c;還需要有豐富的實踐經驗。然而&#xff0c;傳統的課堂教學往往只能通過理論講解和模擬訓練來傳授知識&#xff0c;無法提供真實的實踐環境。而MR混合現實情景實訓教學系統…

Alias許可分析中的數據可視化

Alias許可分析中的數據可視化&#xff1a;引領企業洞察合規之道的明燈 在信息化時代&#xff0c;數據可視化已成為各行各業的重要工具&#xff0c;能夠幫助用戶直觀地理解和分析復雜的數據。在Alias許可分析中&#xff0c;數據可視化同樣發揮著至關重要的作用&#xff0c;為企…

【小程序】應用程序編程接口匯總——授權API、OTA API、家庭API

授權API ty.authorize 權限請求方法 需引入BaseKit&#xff0c;且在>1.2.10版本才可使用 參數 Object object 屬性類型默認值必填說明scopestring是scope 權限名稱 舉例子&#xff1a; scope.bluetooth 藍牙權限 scope.writePhotosAlbum 寫入相冊權限 scope.userLocatio…

知乎高贊回復合集,句句道出生活的真相

1. 怎么定義“想清楚了”&#xff1f; “想清楚了”就是以后出了什么問題&#xff0c;你只能找個沒人的地方抽自己&#xff0c;再也不能抱怨別人了。 2. “別讓孩子輸在起跑線上”有道理嗎&#xff1f; 一輩子都要和別人去比較&#xff0c;是人生悲劇的源頭。 3. 太在乎自己…

鴻蒙OS運行報錯 ‘ToDoListItem({ item })‘ does not meet UI component syntax.

在學習harmonyOS時&#xff0c;原本是好好運行的。但是突然報錯 ToDoListItem({ item }) does not meet UI component syntax. 一臉懵逼&#xff0c;以為是自己語法問題檢查了半天也沒問題。 網上搜索了一下&#xff0c;說把多余的js\map文件刪除就行 才發現我的 鴻蒙的開…

Bert基礎(四)--解碼器(上)

1 理解解碼器 假設我們想把英語句子I am good&#xff08;原句&#xff09;翻譯成法語句子Je vais bien&#xff08;目標句&#xff09;。首先&#xff0c;將原句I am good送入編碼器&#xff0c;使編碼器學習原句&#xff0c;并計算特征值。在前文中&#xff0c;我們學習了編…

代碼隨想錄算法訓練營第四十天|343. 整數拆分、96. 不同的二叉搜索樹。

343. 整數拆分 題目鏈接&#xff1a;整數拆分 題目描述&#xff1a; 給定一個正整數 n &#xff0c;將其拆分為 k 個 正整數 的和&#xff08; k > 2 &#xff09;&#xff0c;并使這些整數的乘積最大化。 返回 你可以獲得的最大乘積 。 解題思路&#xff1a; 1、確定dp數組…

flink內存管理,設置思路,oom問題,一文全

flink內存管理 1 內存分配1.1 JVM 進程總內存&#xff08;Total Process Memory&#xff09;1.2 Flink 總內存&#xff08;Total Flink Memory&#xff09;1.3 JVM 堆外內存&#xff08;JVM Off-Heap Memory&#xff09;1.4 JVM 堆內存&#xff08;JVM Heap Memory&#xff09;…

運維的利器–監控–zabbix–第二步:建設–部署zabbix agent

文章目錄 監控客戶端部署及添加主機一、在 zabbix-server 安裝客戶端二、在本機和其他linux主機安裝zabbix agent客戶端1、安裝2、配置3、啟動并開機自啟4、添加主機創建主機組創建主機等一會或重啟zabbix-server查看配置是否成功 三、在其他windows上安裝zabbix agent客戶端下…

主流的開發語言和開發環境介紹

個人淺見&#xff0c;不喜勿噴&#xff0c;謝謝 軟件開發是一個涉及多個方面的復雜過程&#xff0c;其中包括選擇合適的編程語言和開發環境。編程語言是軟件開發的核心&#xff0c;它定義了程序員用來編寫指令的語法和規則。而開發環境則提供了編寫、測試和調試代碼的工具和平臺…

Microsoft的PromptBench可以做啥?

目錄 PromptBench簡介 PromptBench的快速模型性能評估 PromptBench數據集介紹 PromptBench模型介紹 PromptBench模型加載遇到的問題 第一次在M1 Mac上加載模型 vicuna和llama系列模型 PromptBench各個模型加載情況總結 PromptBench的Prompt快速工程 chain of thought…

WebService學習,wsdl文件詳解

目錄 第一章、起因1.1&#xff09;學習原因1.2&#xff09;提問的過程&#xff08;逐步提出問題&#xff09;1、&#xff1f;wsdl鏈接的含義&#xff0c;有什么作用&#xff1f;2、什么是wsdl文檔&#xff1f;3、如何閱讀wsdl文件&#xff1f;4、wsdl文件有什么作用&#xff1f…

基于springboot+vue的智慧社區系統(前后端分離)

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…