相同,對稱,平衡,右視圖(二叉樹)

本篇基于b站靈茶山艾府。

100. 相同的樹

給你兩棵二叉樹的根節點 pq ,編寫一個函數來檢驗這兩棵樹是否相同。

如果兩個樹在結構上相同,并且節點具有相同的值,則認為它們是相同的。

示例 1:

img

輸入:p = [1,2,3], q = [1,2,3]
輸出:true

示例 2:

img

輸入:p = [1,2], q = [1,null,2]
輸出:false

示例 3:

img

輸入:p = [1,2,1], q = [1,1,2]
輸出:false

# 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 isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:def dfs(p, q):if not p or not q:# 兩個節點都為空,返回True,否則返回Falsereturn p == q# 判斷兩個節點值和左右子樹相不相等return p.val == q.val and dfs(p.left, q.left) and dfs(p.right, q.right)return dfs(p, q)


101. 對稱二叉樹

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

示例 1:

img

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

示例 2:

img

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

# 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:# 本質上跟判斷相同的樹一樣def dfs(p, q):if not p or not q:return p == q# 唯一不同的就是傳入的是左子樹的左孩子和右子樹的右孩子(左子樹的右孩子和右子樹的左孩子)來判斷return p.val == q.val and dfs(p.left, q.right) and dfs(p.right, q.left)return dfs(root.left, root.right)


110. 平衡二叉樹

給定一個二叉樹,判斷它是否是平衡二叉樹

示例 1:

img

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

示例 2:

img

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

示例 3:

輸入:root = []
輸出:true

# 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 isBalanced(self, root: Optional[TreeNode]) -> bool:def dfs(node):if not node:# 返回一個元組,第一個值為該樹是否為平衡二叉樹,第二個值是此樹的高度return (True, 0)f1, h1 = dfs(node.left)f2, h2 = dfs(node.right)# 如果左右子樹的高度差不超過1且左右子樹都是平衡二叉樹,返回True,且向上層返回該樹的高度return (abs(h1 - h2) <= 1 and f1 and f2, max(h1, h2) + 1)return dfs(root)[0]


199. 二叉樹的右視圖

給定一個二叉樹的 根節點 root,想象自己站在它的右側,按照從頂部到底部的順序,返回從右側所能看到的節點值。

示例 1:

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

輸出:[1,3,4]

解釋:

img

示例 2:

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

輸出:[1,3,4,5]

解釋:

img

示例 3:

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

輸出:[1,3]

示例 4:

輸入: root = []

輸出:[]


# 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 rightSideView(self, root: Optional[TreeNode]) -> List[int]:def dfs(node, h):if not node:return# 如果首次遇到這個深度,說明是最右邊的節點,需要記錄高度if h == len(ans):ans.append(node.val)# 從右子樹開始遍歷dfs(node.right, h + 1)dfs(node.left, h + 1)ans = []dfs(root, 0)return ans


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

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

相關文章

MCU開發學習記錄19* - CAN學習與實踐(HAL庫) - 定時傳輸、觸發傳輸和請求傳輸(輪詢與中斷實現) -STM32CubeMX

名詞解釋&#xff1a; CAN&#xff1a;Controller Area Network ISO&#xff1a;?International Organization for Standardization ?OSI&#xff1a;?Open Systems Interconnection SOF&#xff1a;?Start Of Frame EOF&#xff1a;?End Of Frame?? 統一文章結構&…

LEED認證是什么?LEED認證難嗎?LEED認證需要準備的資料

LEED&#xff08;Leadership in Energy and Environmental Design&#xff0c;能源與環境設計先鋒&#xff09;是由美國綠色建筑委員會&#xff08;USGBC&#xff09;開發的一套全球廣泛認可的綠色建筑認證體系&#xff0c;用于評估建筑在設計、施工、運營和維護中的可持續性表…

【ffmpeg】ffprobe基本用法

ffprobe 是 FFmpeg 工具集中的一個強大命令行工具&#xff0c;主要用于分析多媒體文件&#xff08;如視頻、音頻等&#xff09;的格式和內容信息。它可以提取文件的元數據、編解碼器信息、流詳情、幀信息等&#xff0c;而無需對文件進行轉碼或修改。 基本用法 ffprobe [選項] …

暗黑科技感風格智慧工地監管系統

智慧工地監管系統作為這場變革中的關鍵力量&#xff0c;正逐漸改變著傳統工地的管理模式。今天&#xff0c;就帶大家一同領略一款用Axure精心打造的暗黑科技感風格智慧工地監管系統原型&#xff0c;感受科技與建筑碰撞出的奇妙火花。 這款智慧工地監管系統原型采用了極具魅力的…

【軟件安裝】Windows操作系統中安裝mongodb數據庫和mongo-shell工具

這篇文章&#xff0c;主要介紹Windows操作系統中如何安裝mongodb數據庫和mongo-shell工具。 目錄 一、安裝mongodb數據庫 1.1、下載mongodb安裝包 1.2、添加配置文件 1.3、編寫啟動腳本&#xff08;可選&#xff09; 1.4、啟動服務 二、安裝mongo-shell工具 2.1、下載mo…

CSS:margin的塌陷與合并問題

文章目錄 一、margin塌陷問題二、margin合并問題 一、margin塌陷問題 二、margin合并問題

PostgreSQL 數據庫備份與恢復

1 邏輯備份(單庫) postgres#pg_dump --help 使用方法: pg_dump [選項]... [數據庫名字] 一般選項: -f, --fileFILENAME 輸出文件或目錄名 -F, --formatc|d|t|p 輸出文件格式 (c 自定義壓縮格式輸出, d 目錄, tar,p 備份為文本明…

使用 LibreOffice 實現各種文檔格式轉換(支持任何開發語言調用 和 Linux + Windows 環境)[全網首發,保姆級教程,建議收藏]

以下能幫助你可以使用任何開發語言&#xff0c;在任何平臺都能使用 LibreOffice 實現 Word、Excel、PPT 等文檔的自動轉換&#xff0c;目前展示在 ASP.NET Core 中為 PDF的實戰案例&#xff0c;其他的文檔格式轉換邏輯同理。 &#x1f4e6; 1. 安裝 LibreOffice &#x1f427;…

AWS stop/start 使實例存儲lost + 注意點

先看一下官方的說明: EC2有一個特性,當執行stop/start操作(注意,這個并不是重啟/reboot,而是先停止/stop,再啟動/start)時,該EC2會遷移到其它的底層硬件上。 對于實例存儲來說,由于實例存儲是由其所在的底層硬件來提供的,此時相當于分配到了一塊全新的空的磁盤。 但是從…

跨域問題詳解

目錄 一、什么是跨域問題&#xff1f; 二、跨域問題出現的原因 三、跨域的解決方案 四、結語 在 Web 開發的世界里&#xff0c;當我們嘗試通過 AJAX 等技術獲取不同源的資源時&#xff0c;常常會遇到 “跨域問題”。這不僅是前端開發者頻繁遭遇的技術障礙&#xff0c;也是保…

VSCode 插件 GitLens 破解方法

文章目錄 1. 安裝指定版本2. 修改插件文件3. 重啟 VSCode 1. 安裝指定版本 在 VSCode 中打開擴展&#xff08;Ctrl Shift X&#xff09;&#xff0c;搜索 GitLens&#xff0c;右鍵點擊 安裝特定版本&#xff0c;在彈出的窗口中選擇 17.0.2&#xff0c;然后等待安裝完成。 2…

JavaScript的三大核心組成:ECMAScript、DOM與BOM

JavaScript的三大核心組成&#xff1a;ECMAScript、DOM與BOM 在前端開發領域&#xff0c;JavaScript是構建動態網頁和交互式應用的核心語言。然而&#xff0c;許多人對JavaScript的組成缺乏清晰的認識。實際上&#xff0c;JavaScript并非單一的語言規范&#xff0c;而是由三個…

JC/T 2490-2019 石灰基單層裝飾砂漿檢測

石灰基單層裝飾砂漿是指由石灰等無機膠凝材料、級配砂、外加劑或無機顏料制成的具有裝飾功能的干粉飾面材料。 JC/T 2490-2019石灰基單層裝飾砂漿檢測項目&#xff1a; 測試項目 測試方法 外觀 JC/T 2490 干密度 JC/T 2490 凝結時間 JGJ/T 70 抗折強度 GB/T 17671 抗…

用算法實現 用統計的方式實現 用自然語言處理的方法實現 用大模型實現 專利精益化統計分析

我們可以從算法、統計、自然語言處理&#xff08;NLP&#xff09;和大型語言模型&#xff08;LLM&#xff09;這四個方面&#xff0c;探討如何實現對專利社區、作者重要性以及共同作者貢獻度的分析。 1. 如何體現專利的社區 (社群效應) &#x1f916; 用算法實現 網絡分析算法…

深入淺出IIC協議 - 從總線原理到FPGA實戰開發 -- 第五篇:多主仲裁與錯誤恢復

第五篇&#xff1a;多主仲裁與錯誤恢復 副標題 &#xff1a;從總線沖突到故障自愈——構建高可靠I2C系統的終極指南 1. 多主仲裁機制 1.1 仲裁原理與硬件實現 仲裁流程圖解 &#xff1a; 仲裁失敗處理 &#xff1a; 立即切換為從機模式 監測總線空閑后重試&#xff08;隨機…

146. LRU Cache

題目描述 146. LRU Cache 哈希表雙向鏈表 詳見代碼和注釋&#xff1a; class LRUCache { private:int capacity_{0};int size_{0};struct Node{int key{0};int val{0};Node* pre{nullptr};Node* next{nullptr};Node(int k,int v,Node* pr,Node* nex):key(k),val(v),pre(pr),…

docker network 自定義網絡配置與管理指南

Docker 自定義網絡配置與管理指南 1. 網絡基礎概念 Docker 網絡是容器間通信和與外部世界交互的基礎。通過自定義網絡&#xff0c;可以實現容器間的隔離、靜態 IP 分配和服務發現。 關鍵術語&#xff1a; 子網(Subnet)&#xff1a;IP 地址的邏輯分組&#xff0c;例如 172.1…

linux strace調式定位系統問題

strace 的基本功能 strace 的主要功能包括&#xff1a; 跟蹤系統調用&#xff1a;顯示進程執行時調用的系統函數及其參數和返回值。監控信號&#xff1a;記錄進程接收到的信號。性能分析&#xff1a;統計系統調用的執行時間和次數。調試支持&#xff1a;幫助定位程序崩潰、性…

告別手抖困擾:全方位健康護理指南

手抖&#xff0c;醫學上稱為震顫&#xff0c;是常見的身體癥狀&#xff0c;可能由多種原因引發&#xff0c;了解其成因并采取科學護理措施&#xff0c;對改善癥狀、維護健康至關重要。 生理性手抖往往因情緒激動、過度勞累、大量飲用咖啡或酒精等引起&#xff0c;這種手抖通常較…

華為2025年校招筆試真題手撕教程(一)

一、題目 輸入&#xff1a; 第一行為記錄的版本迭代關系個數N&#xff0c;范圍是[1&#xff0c;100000]; 第二行到第N1行&#xff1a;每行包含兩個字符串&#xff0c;第一個字符串為當前版本&#xff0c;第二個字符串為前序版本&#xff0c;用空格隔開。字符串包含字符個數為…