力扣hot100題解(python版36-40題)

36、二叉樹的中序遍歷

給定一個二叉樹的根節點 root ,返回 它的 *中序 遍歷* 。

示例 1:

輸入:root = [1,null,2,3]
輸出:[1,3,2]

示例 2:

輸入:root = []
輸出:[]

示例 3:

輸入:root = [1]
輸出:[1]

提示:

  • 樹中節點數目在范圍 [0, 100]
  • -100 <= Node.val <= 100

思路解答:

1、遞歸 左-根-右即可

def inorderTraversal(self, root: Optional[TreeNode]) -> list[int]:def inorder(node,result):if not node:return []inorder(node.left,result)result.append(node.val)inorder(node.right,result)result = []inorder(root,result)return result

37、二叉樹的最大深度

給定一個二叉樹 root ,返回其最大深度。

二叉樹的 最大深度 是指從根節點到最遠葉子節點的最長路徑上的節點數。

示例 1:

img

輸入:root = [3,9,20,null,null,15,7]
輸出:3

示例 2:

輸入:root = [1,null,2]
輸出:2

提示:

  • 樹中節點的數量在 [0, 104] 區間內。
  • -100 <= Node.val <= 100

思路解答:

1、遞歸計算左子樹和右子樹的深度,取兩者中的較大值,并加上1(當前節點的深度)作為樹的深度。

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

38、翻轉二叉樹

給你一棵二叉樹的根節點 root ,翻轉這棵二叉樹,并返回其根節點。

示例 1:

img

輸入:root = [4,2,7,1,3,6,9]
輸出:[4,7,2,9,6,3,1]

示例 2:

img

輸入:root = [2,1,3]
輸出:[2,3,1]

示例 3:

輸入:root = []
輸出:[]

提示:

  • 樹中節點數目范圍在 [0, 100]
  • -100 <= Node.val <= 100

思路解答:

1、交換每個節點的左右子樹,然后遞歸地對左右子樹進行翻轉

def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:if not root:return None#交換左右子樹root.left, root.right = root.right, root.leftinvertTree(root.left)invertTree(root.right)return root

39、對稱二叉樹

給你一個二叉樹的根節點 root , 檢查它是否軸對稱。

img

示例 1:

輸入:root = [1,2,2,3,4,4,3]
輸出:true

示例 2:

img

輸入:root = [1,2,2,null,3,null,3]
輸出:false

提示:

  • 樹中節點數目在范圍 [1, 1000]
  • -100 <= Node.val <= 100

思路解答:

1、遞歸地比較兩個節點及它們的子樹是否軸對稱 具體就是:遞歸地比較左子樹的左節點與右子樹的右節點,以及左子樹的右節點與右子樹的左節點他們的值是否相同即可

def isSymmetric(self, root: Optional[TreeNode]) -> bool:def isMirror(left, right):if not left and not right:return Trueif not left or not right:return Falsereturn (left.val == right.val) and isMirror(left.left, right.right) and isMirror(left.right, right.left)if not root:return Truereturn isMirror(root.left, root.right)

40、二叉樹的直徑

給你一棵二叉樹的根節點,返回該樹的 直徑

二叉樹的 直徑 是指樹中任意兩個節點之間最長路徑的 長度 。這條路徑可能經過也可能不經過根節點 root

兩節點之間路徑的 長度 由它們之間邊數表示。

示例 1:

img

輸入:root = [1,2,3,4,5]
輸出:3
解釋:3 ,取路徑 [4,2,1,3] 或 [5,2,1,3] 的長度。

示例 2:

輸入:root = [1,2]
輸出:1

提示:

  • 樹中節點數目在范圍 [1, 104]
  • -100 <= Node.val <= 100

思路解答:

1、對于每個節點,遞歸地計算左子樹的深度和右子樹的深度。

2、計算每個節點的深度時,計算經過當前節點的路徑長度(左子樹深度 + 右子樹深度),并更新全局變量來記錄最大直徑。

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

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

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

相關文章

tcping實用小工具

Tcping實用小工具命令詳解 一、tcping介紹 tcping&#xff1a;tcping命令基于tcp協議監控&#xff0c;可以從較低級別的協議獲得簡單的&#xff0c;可能不可靠的數據報服務。 原則上&#xff0c;TCP應該能夠在從容硬線連接到分組交換或電路交換網絡的各種通信系統之上操作。 …

【機器學習基礎】層次聚類-BIRCH聚類

&#x1f680;個人主頁&#xff1a;為夢而生~ 關注我一起學習吧&#xff01; &#x1f4a1;專欄&#xff1a;機器學習 歡迎訂閱&#xff01;相對完整的機器學習基礎教學&#xff01; ?特別提醒&#xff1a;針對機器學習&#xff0c;特別開始專欄&#xff1a;機器學習python實戰…

企業微信私有部署:實現高效溝通與信息安全

隨著移動互聯網的快速發展&#xff0c;企業微信作為一種高效、便捷的通訊工具&#xff0c;已經成為了眾多企業的首選。然而&#xff0c;對于一些對信息安全有特殊要求的大型企業而言&#xff0c;使用公有版企業微信并不能滿足其安全需求。因此&#xff0c;企業微信私有部署應運…

matplotlib.animation 3d姿態動畫

目錄 演示效果&#xff1a; 演示代碼&#xff1a; 保存為gif 演示效果&#xff1a; 演示代碼&#xff1a; import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotlib.animation import FuncAnimation# 定義人體關鍵點…

【c++入門】純粹的五位偶數

說明 純粹偶數指的是一個數的各個位都是偶數的數&#xff0c;比如&#xff1a;24686&#xff1b;請編程求出10000~n中&#xff0c;所有的五位的純粹偶數有多少個&#xff1f; 輸入數據 一個整數n&#xff08;n為一個5位的整數&#xff09; 輸出數據 一個整數&#xff0c;代…

網絡防御第6次作業

防病毒網關 按照傳播方式分類 病毒 病毒是一種基于硬件和操作系統的程序&#xff0c;具有感染和破壞能力&#xff0c;這與病毒程序的結構有關。病毒攻擊的宿主程序是病毒的棲身地&#xff0c;它是病毒傳播的目的地&#xff0c;又是下一次感染的出發點。計算機病毒感染的一般過…

Java基礎 - Stream 流:Stream API的中間操作

在上一篇博客中&#xff0c;我介紹了構建 Stream 流的多種方式&#xff0c;以及 Stream 流的特點和優勢。如果你還沒有閱讀&#xff0c;你可以點擊這里查看。 Java基礎 - Stream 流&#xff1a;構建流的多種方式 在這篇博客中&#xff0c;我將探索 Stream API 的中間操作&…

動態規劃(算法競賽、藍橋杯)--分組背包DP

1、B站視頻鏈接&#xff1a;E16 背包DP 分組背包_嗶哩嗶哩_bilibili #include <bits/stdc.h> using namespace std; const int N110; int v[N][N],w[N][N],s[N]; // v[i,j]:第i組第j個物品的體積 s[i]:第i組物品的個數 int f[N][N]; // f[i,j]:前i組物品&#xff0c;能放…

學習JavaEE的日子 Day21 枚舉

Day21 1.枚舉的引入 需求&#xff1a;編寫季節類&#xff08;Season&#xff09;&#xff0c;該類只有四個對象&#xff08;spring&#xff0c;summer&#xff0c;autumn&#xff0c;winter&#xff09; 概念&#xff1a;枚舉&#xff08;enum&#xff09;全稱為 enumeration&…

基帶信號處理設計原理圖:2-基于6U VPX的雙TMS320C6678+Xilinx FPGA K7 XC7K420T的圖像信號處理板

基于6U VPX的雙TMS320C6678Xilinx FPGA K7 XC7K420T的圖像信號處理板 綜合圖像處理硬件平臺包括圖像信號處理板2塊&#xff0c;視頻處理板1塊&#xff0c;主控板1塊&#xff0c;電源板1塊&#xff0c;VPX背板1塊。 一、板卡概述 圖像信號處理板包括2片TI 多核DSP處理…

Linux進程管理:(二)進程調度原語

文章說明&#xff1a; Linux內核版本&#xff1a;5.0 架構&#xff1a;ARM64 參考資料及圖片來源&#xff1a;《奔跑吧Linux內核》 Linux 5.0內核源碼注釋倉庫地址&#xff1a; zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 進程調度的概念比較簡單&#xff0c…

Java學習筆記NO.17

T1&#xff1a;合并兩個排序好的整數數組 import java.util.Arrays;public class MergeSortedArrays {public static int[] mergeArrays(int[] arr1, int[] arr2) {int[] result new int[arr1.length arr2.length];int i 0, j 0, k 0;while (i < arr1.length &&am…

一個簡單的iOS天氣應用程序源碼

創建一個簡單的iOS天氣應用程序涉及到多個步驟&#xff0c;包括設置項目、編寫代碼和使用外部API。由于篇幅限制&#xff0c;我將提供一個基礎的示例&#xff0c;這個例子會展示如何創建一個簡單的UI&#xff0c;獲取用戶的當前位置&#xff0c;并從OpenWeatherMap API獲取天氣…

QPS 提升 10 倍!滴滴借助 StarRocks 物化視圖實現低成本精確去重

作者&#xff1a;滴滴 OLAP 開發工程師 劉雨飛 小編導讀&#xff1a; 滴滴于 2022 年引入了 StarRocks。經過一年多的努力&#xff0c;StarRocks 逐漸替代了原有技術棧&#xff0c;成為滴滴內部主要的 OLAP 引擎。截至 2023 年 12 月&#xff0c;滴滴已經成功建立了超過 40 個 …

Cesium插件系列——3dtiles壓平

本系列為自己基于cesium寫的一套插件具體實現。 這里是根據Cesium提供的CustomShader來實現的。 在CustomShader的vertexShaderText里&#xff0c;需要定義vertexMain函數&#xff0c;例如下&#xff1a; struct VertexInput {Attributes attributes;FeatureIds featureIds;…

LVGL常用部件使用總結之圖片部件

圖片部件可用于顯示圖片&#xff0c;圖片源可以是 C 語言數組格式的文件、二進制的.bin 文件以及圖標字體。值得注意的是&#xff0c;圖片部件要顯示 BMP、JPEG 等格式的圖片&#xff0c;則必須經過解碼。 圖片部件的組成部分僅有一個&#xff1a;主體&#xff08;LV_PART_MAIN…

URI到底是個啥

URI是統一資源標識符&#xff08;Uniform Resource Identifier&#xff09;&#xff0c;URL是統一資源定位符&#xff08;Uniform Resource Locator&#xff09;。 具體如何標記和區分服務器上的資源用的其實就是URI&#xff0c;因為其經常出現在瀏覽器的地址欄里&#xff0c;…

Verilog(未完待續)

Verilog教程 這個教程寫的很好&#xff0c;可以多看看。本篇還沒整理完。 一、Verilog簡介 什么是FPGA&#xff1f;一種可通過編程來修改其邏輯功能的數字集成電路&#xff08;芯片&#xff09; 與單片機的區別&#xff1f;對單片機編程并不改變其地電路的內部結構&#xff0…

Parallel Computing - 一文講懂并行計算

目錄 Throughput/LatencySerial ComputingParallel ComputingTypes of parallel computersSimple 4-width SIMDAmdahls lawTypes of parallelism**Data Parallel Model**Task parallel PartitioningDomain DecompositionFunctional Decomposition CommunicationsExample that d…

java調用chatgpt接口,實現專屬于自己的人工智能助手

文章目錄 前言導包基本說明請求參數響應參數創建請求和響應的VO類 代碼編寫使用最后說明 前言 今天突然突發奇想&#xff0c;就想要用java來調用chatget的接口&#xff0c;實現自己的聊天機器人&#xff0c;但是網上找文章&#xff0c;屬實是少的可憐(可能是不讓發吧)。找到了…