算法訓練營第十三天|226.翻轉二叉樹、101. 對稱二叉樹、 104.二叉樹的最大深度、111.二叉樹的最小深度

遞歸

遞歸三部曲:

  • 1.確定參數和返回值
  • 2.確定終止條件
  • 3.確定單層邏輯

226.翻轉二叉樹

題目

在這里插入圖片描述

思路與解法

第一想法: 遞歸,對每個結點進行反轉

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:cur = rootif cur:tmp = cur.leftcur.left = cur.rightcur.right = tmpself.invertTree(cur.left)self.invertTree(cur.right)return root

101. 對稱二叉樹

題目

在這里插入圖片描述

思路與解法

carl的講解:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def isSymmetric(self, root: Optional[TreeNode]) -> bool:if not root:return Truedef compare(left, right) -> bool:if not ((left and right) or (not left and not right)):return Falseif not left and not right:return Trueelif left.val != right.val:return Falseif not compare(left.left, right.right):return Falseif not compare(left.right, right.left):return Falsereturn Truereturn compare(root.left, root.right)

104.二叉樹的最大深度

題目

在這里插入圖片描述

思路與解法

第一思路: 可以用層序遍歷,記錄層數。遞歸的話就得想想了。不好描述,先寫吧。
寫了出來,在37/39個示例報超時。
在這里插入圖片描述
發現超時的原因了,因為 16、17、18行的代碼將get_depth(depth, node.left)get_depth(depth, node.right)各計算了兩次。對于樹這種遞歸結構,這是嚴重的性能問題
修改方式很簡單,獲取返回值后再比較就好:
在這里插入圖片描述
**carl的講解:**不再顯示傳遞depth參數,因為遞歸本身隱式計算深度


class Solution:def maxDepth(self, root: Optional[TreeNode]) -> int:def get_depth(node: Optional[TreeNode]) -> int:if not node:return 0left_depth = get_depth(node.left)right_depth = get_depth(node.right)return 1 + max(left_depth, right_depth)return get_depth(root)

111.二叉樹的最小深度

題目

在這里插入圖片描述

思路與解法

第一想法: 就是簡單的改前面的最大深度為最小深度。但是踩坑了,不是這么簡單。
**carl的講解:**因為最小深度的判別要比最大深度復雜。直接將max改成min是不行的,因為會把非葉子節點的值當作最小值返回。因為這個非葉子節點可能離根節點不愿,左邊沒節點但是右邊有節點,這樣他就可能得出的depth很小,但是他都不是葉子節點。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def minDepth(self, root: Optional[TreeNode]) -> int:return self.get_depth(root)def get_depth(self, node: Optional[TreeNode]) -> int:if not node:return 0left_depth = self.get_depth(node.left)right_depth = self.get_depth(node.right)if node.left is None and node.right is not None:return right_depth + 1if node.right is None and node.left is not None:return left_depth + 1return 1 + min(left_depth, right_depth) 

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

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

相關文章

sunset:Solstice靶場

sunset:Solstice https://www.vulnhub.com/entry/sunset-solstice,499/ 1,將兩臺虛擬機網絡連接都改為NAT模式 2,攻擊機上做namp局域網掃描發現靶機 nmap -sn 192.168.23.0/24 那么攻擊機IP為192.168.23.182,靶場IP192.168.23.244 3&#xff…

AZScreenRecorder最新版:功能強大、操作簡便的手機錄屏軟件

AZScreenRecorder最新版是一款功能強大的手機錄屏軟件,專為安卓設備設計。它無需ROOT權限,支持無限錄制時長,操作簡單,錄制過程中可以隨時暫停,滿足不同用戶的個性化錄屏需求。此外,用戶還可以自定義分辨率…

模塊自動導入的小工具

import { ref, reactive, onMounted } from vue import { useRoute, useRouter } from vue-router項目里很多文件都需要引入這些公共庫,比較繁瑣,使用一個小工具可以自動導入,就不需要在每個文件里面都寫這些導入的代碼了。 通過命令行下載安…

【讀書筆記】《編碼:隱匿在計算機軟硬件背后的語言》01 邏輯與開關

【讀書筆記】《編碼:隱匿在計算機軟硬件背后的語言》01 邏輯與開關 前言01 邏輯與開關 前言 我是一名光學工程專業研二的學生,目前正處于找工作的階段,根據往年師兄師姐找工作的情況,在西安這個城市不出意外我能找到的應該就是嵌入…

TXT編碼轉換工具iconv

iconv.exe是實現TXT編碼轉換的命令行工具,支持幾百種編碼格式的轉換,利用它可以在自主開發程序上實現TXT文檔編碼的自動轉換。 一、命令參數格式 Usage: iconv [-c] [-s] [-f fromcode] [-t tocode] [file ...] or: iconv -l 二、轉換的示例 將UTF-8…

軟考中級數據庫備考-上午篇

背景 新工作主要做大數據平臺,考一個軟考中級數據庫系統工程師,補足一下基礎知識。 基礎知識 1.計算機硬件基礎知識 正確答案:C 正確答案:D 正確答案:C 正確答案:BC 正確答案:B 正確答案:D 正確答案:A DMA建立內存與外設的直接…

AtCoder AT_abc405_d ABC405D - Escape Route

前言 BFS 算法在 AtCoder 比賽中還是會考的,因為不常練習導致沒想到,不僅錯誤 TLE 了很多,還影響了心態,3 發罰時后才 AC。 思路 首先,我們把所有位置和出口的距離算出來(用 BFS)&#xff0c…

【計算機視覺】目標檢測:yoloV1~yoloV11項目論文及對比

以下是 YOLO (You Only Look Once) 系列模型從 V1 到 V11 的詳細介紹和項目地址(截至2024年7月)。YOLO 是目標檢測領域的里程碑模型,以其 實時性 和 高精度 著稱,廣泛應用于自動駕駛、安防監控、工業檢測等領域。 YOLOv1 (2016) …

推薦系統架構設計

1.分析用戶行為數據?:? 收集用戶的活躍時間、點擊行為、瀏覽歷史等數據。?分析用戶的活躍模式,確定用戶最活躍的時間段。?kafka flink 數據庫 分析用戶行為并存儲 2. 預生成推薦內容?:? 在用戶活躍時間之前,預先生成推薦…

BERT類模型

1. BERT類模型是否需要處理 [CLS] 或池化? 那首先搞懂 [CLS] 和池化 (1)[CLS] 的作用 BERT 的輸入格式中,每個序列的開頭會添加一個特殊的 [CLS] Token(Classification Token)。它的設計初衷是為分類任務…

我的世界云端服務器具體是指什么?

我的世界云端服務器是指一種基于互聯網的多人游戲服務器,將游戲服務器運行在云平臺上,而不是在本地計算機中,這使用戶不需要考慮自身電腦的性能和網絡穩定性,只需要通過網絡連接到云端服務器,就可以享受到順暢的游戲體…

軟考(信息系統運行管理員)

第一章 信息系統運維概述 1.1 信息系統概述 信息的含義和類型 信息的含義: 一般:人們關心的事情的消息或知識。香農(信息論創始人):用來減少隨機不確定性的東西(標志著信息科學進入定量研究階段&#xff…

Unity基礎學習(九)輸入系統全解析:鼠標、鍵盤與軸控制

目錄 一、Input類 1. 鼠標輸入 2. 鍵盤輸入 3. 默認軸輸入 (1) 基礎參數 (2)按鍵綁定參數 (3)輸入響應參數 (4)輸入類型與設備參數 (5)不同類型軸的參…

VBA將PDF文檔內容逐行寫入Excel

VBA是無法直接讀取PDF文檔的,但結合上期我給大家介紹了PDF轉換工具xpdf-tools-4.05,先利用它將PDF文檔轉換為TXT文檔,然后再將TXT的內容寫入Excel,這樣就間接實現了將PDF文檔的內容導入Excel的操作。下面的代碼將向大家演示如何實…

Spring Boot之MCP Client開發全介紹

Spring AI MCP(模型上下文協議,Model Context Protocol)客戶端啟動器為 Spring Boot 應用程序中的 MCP 客戶端功能提供了自動配置支持。它支持同步和異步兩種客戶端實現方式,并提供了多種傳輸選項。 MCP 客戶端啟動器提供以下功能: 多客戶端實例管理 支持管理多個客戶端實…

[題解]2023CCPC黑龍江省賽 - Folder

來源:F.Folder - Codeforces題意:給定由 n ( 1 ≤ n ≤ 1 0 5 ) n(1\le n\le 10^5) n(1≤n≤105)個結點組成的樹,每次操作可將一棵子樹接到其他結點上。求將樹轉換為一棵斜樹的最小操作次數。關鍵詞:思維(簽到)題解:斜…

string[字符串中第一個的唯一字符][藍橋杯]

使用哈希表解決 class Solution { public:int firstUniqChar(string s) {int arr[26];for(int i0;i<s.size();i){arr[s[i]-a];}for(int i0;i<s.size();i){if(arr[s[i]-a]1)return i;}return -1;} };

【深度學習-Day 8】讓數據說話:Python 可視化雙雄 Matplotlib 與 Seaborn 教程

Langchain系列文章目錄 01-玩轉LangChain&#xff1a;從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊&#xff1a;四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain&#xff1a;從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

Flink 實時數據一致性與 Exactly-Once 語義保障實戰

在構建企業級實時數倉的過程中,“數據一致性” 是保障指標準確性的核心能力,尤其是在金融、電商、醫療等對數據敏感度極高的場景中。Flink 作為流批一體的實時計算引擎,其內建的 Exactly-Once 語義為我們提供了強有力的保障機制。本篇將圍繞如何實現端到端的數據一致性、如何…

傅利葉十周年,升級核心戰略:“有溫度”的具身智能藍圖

5月9日&#xff0c;傅利葉十周年慶典暨首屆具身智能生態峰會在上海正式召開。本次大會以“十年共創&#xff0c;具身成翼”為主題&#xff0c;匯聚了來自通用機器人與醫療康復領域的頂尖專家學者、合作伙伴與投資機構&#xff0c;共同探索具身智能在未來十年的技術應用與生態發…