【leetcode】543. 二叉樹的直徑

二叉樹的直徑

    • 題目
    • 題解
    • 解釋

題目

543. 二叉樹的直徑

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

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

兩節點之間路徑的 長度 由它們之間邊數表示。
在這里插入圖片描述

題解

思路:找到左邊最長和右邊最長

# 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 diameterOfBinaryTree(self, root):""":type root: Optional[TreeNode]:rtype: int"""self.ans = 0def dfs(root):if root is None:return -1l_len = dfs(root.left) + 1r_len = dfs(root.right) + 1self.ans = max(self.ans, l_len + r_len)return max(l_len, r_len)dfs(root)return self.ans   

解釋

假設我們有以下的二叉樹:

     1/ \2   3/ \  4   5

步驟 1: 初始調用
diameterOfBinaryTree(root) 調用 dfs(root),即傳入根節點 1。

步驟 2: 遞歸計算深度

  • 對節點 1:

    • 左子樹:遞歸調用 dfs(root.left),即節點 2。
  • 對節點 2:

    • 左子樹:遞歸調用 dfs(root.left),即節點 4。

      • 節點 4 是葉子節點,因此返回 0。
    • 右子樹:遞歸調用 dfs(root.right),即節點 5。

      • 節點 5 是葉子節點,因此返回 0。
    • 對節點 2:l_len = 0 + 1 = 1,r_len = 0 + 1 = 1,self.ans = max(0, 1 + 1) = 2,返回 max(1, 1) = 1。

  • 對節點 1:

    • 左子樹:返回節點 2 的深度 1。

    • 右子樹:遞歸調用 dfs(root.right),即節點 3。

      • 節點 3 是葉子節點,因此返回 0。
    • 對節點 1:l_len = 1 + 1 = 2,r_len = 0 + 1 = 1,self.ans = max(2, 2 + 1) = 3,返回 max(2, 1) = 2。

步驟 3: 返回結果
最終返回 self.ans = 3,表示二叉樹的直徑為 3,即從節點 4 到節點 5,通過節點 2 再到節點 1,該路徑包含 3 個節點。

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

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

相關文章

AI基礎知識(07):基于 PyTorch 的手寫體識別案例手冊

目錄 實驗介紹 實驗對象 實驗時間 實驗流程 實驗介紹 隨著人工智能技術的飛速發展,圖像識別技術在眾多領域得到了廣泛應用。手寫體識別作為圖像 識別的一個重要分支,其在教育、金融、醫療等領域具有廣泛的應用前景。本實驗旨在利用深度 學習框架 PyTorc…

wordpress后臺更新后 前端沒變化的解決方法

使用siteground主機的wordpress網站,會出現更新了網站內容和修改了php模板文件、js文件、css文件、圖片文件后,網站沒有變化的情況。 不熟悉siteground主機的新手,遇到這個問題,就很抓狂,明明是哪都沒操作錯誤&#x…

信號(瞬時)頻率求解與仿真實踐(2)

引言 本文是信號(瞬時)頻率求解與仿真實踐專題的第二篇文章,在上一篇博文 [1]信號(瞬時)頻率求解與仿真實踐(1)-CSDN博客中,我構建了信號瞬時頻率求解的基本框架,并且比較詳細地討論了瞬時頻率法。這篇博文探討適用于信號瞬時頻率求解的另一種…

Linux運行發布jar文件攜帶哪些參數

在 CentOS 8 上運行發布的 JAR 文件時,可以根據不同需求攜帶以下參數: 1. 基本運行方式 bash 復制 下載 java -jar your-application.jar 2. 常用 JVM 參數 參數說明-Xms256m初始堆內存大小(如 256MB)-Xmx1024m最大堆內存大小(如 1GB)-XX:MaxMetaspaceSize=256m元空間…

在GIS 工作流中實現數據處理(4)

結果輸出與可視化 最后,我們將統計結果輸出為一個 Excel 文件,并在 ArcMap 中對城市中心區域的土地利用情況進行可視化展示。 import pandas as pd# 將統計表格轉換為 pandas DataFrame df pd.read_csv(statistics_table, sep"\t")# 輸出為…

【術語解釋】網絡安全((SAST, DAST, SCA, IAST),Hadoop, Spark, Hive 的關系

## OWASP Top 10等 OWASP Top 10:OWASP (Open Worldwide Application Security Project,開放全球應用程序安全項目) Top 10 是一份由全球安全專家定期更新的報告,列出了當前 Web 應用程序面臨的十大最關鍵安全風險。 它是一個廣受認可的意識文…

NY197NY205美光閃存固態NY218NY226

NY197NY205美光閃存固態NY218NY226 美光科技作為全球領先的半導體存儲解決方案供應商,其閃存固態硬盤(SSD)產品線一直備受業界關注。NY197、NY205、NY218和NY226是美光近期推出的幾款重要固態硬盤型號,它們在性能、容量和適用場景…

MinHook 對.NET底層的 SendMessage 攔截真實案例反思

一:背景 1. 講故事 上一篇我們說到了 minhook 的一個簡單使用,這一篇給大家分享一個 minhook 在 dump 分析中的實戰,先看下面的線程棧。 0:044> ~~[138c]s win32u!NtUserMessageCall0x14: 00007ffc5c891184 c3 ret 0:061&g…

qt配合海康工業相機取圖開發

1.最近開發海康工業相機&#xff0c;做取圖demo 2.在MVS運行目錄下找到Development文件夾&#xff0c;找到下圖兩個文件夾一個是頭文件一個是庫文件 3.引用到qt項目中 4.下面是頭文件跟源文件 頭文件 #ifndef MVSCAMERA_H #define MVSCAMERA_H#include <QObject> #incl…

JavaScript基礎學習與應用(后端了解部分)

JavaScript JavaScript原名liveScrip,由美國網景公司開發的一種用于對網頁操作的腳本語言 腳本語言:(不需要編譯 sql html css)由某種解釋器直接解釋運行的 JavaScript是一種解釋性的腳本語言 JavaScript是網頁的行為,可以為網頁提供各種行為(圖片操作) JavaScript一般一對…

Linux環境下安裝和使用RAPIDS平臺的cudf和cuml - pip 安裝方法

? cuDF 和 cuML 是 RAPIDS平臺 的兩個核心組件&#xff0c;它們共同構成了RAPIDS平臺的主要功能 1.linux環境下pip安裝 pip install cuml-cu1224.6.0 --extra-index-urlhttps://pypi.nvidia.com 安裝過程中可能會提示缺少包之類的&#xff0c;按提示進行包的缺失安裝 2.安裝…

基于 Redis 的冪等性設計:SpringBoot @Async 在高并發 MySQL 日志存儲中的應用

一、問題描述 在高并發場景下,大量設備實時上報狀態數據,需要異步保存到MySQL,同時需要解決冪等性校驗和線程池耗盡問題。 二、解決方案 1. 冪等性控制 作用:確保同一請求無論執行多少次,結果都一致,避免重復處理。 實現方式: 唯一標識:設備ID + 時間戳組合Redis原…

ELK日志采集系統

ELK 日志采集系統指的是由 Elasticsearch、Logstash 和 Kibana 三個核心開源軟件組成的套件&#xff0c;用于集中式日志的采集、處理、存儲、搜索、分析和可視化。它現在更常被稱為 Elastic Stack&#xff0c;因為其組件生態已經擴展&#xff08;尤其是引入了 Beats&#xff09…

什么是音頻?

引言&#xff1a;聲音的本質 什么是音頻&#xff1f;振動與感知 音頻&#xff0c;在其最核心的層面&#xff0c;即是我們通常所說的聲音。它起源于物體的振動。這些振動擾動了其周圍的介質&#xff08;例如空氣或水&#xff09;&#xff0c;在介質中產生了微小的壓力變化&…

接口 RESTful 中的超媒體:REST 架構的靈魂驅動

在 RESTful 架構中&#xff0c;** 超媒體&#xff08;Hypermedia&#xff09;** 是一個核心概念&#xff0c;它體現了 REST 的 “表述性狀態轉移&#xff08;Representational State Transfer&#xff09;” 的本質&#xff0c;也是區分 “真 RESTful API” 與 “偽 RESTful AP…

centos clamav 掃描及告警配置

centos clamav 掃描及告警配置 1 下載1.1官網下載1.2 在線下載2 配置3 掃描3.1 更新病毒庫3.2 掃描4 告警4.1 安裝 Postfix4.2 安裝mail郵件工具4.3 配置4.4 發送告警郵箱信息5 定時配置(cronie)5.1 定時更新病毒庫5.2 定時掃描1 下載 1.1官網下載 官網下載地址,下載rpm包…

華為WLAN概述知識點及案例試題

目錄 &#x1f4d8; 華為WLAN概述知識點及案例總結? 一、WLAN技術背景&#x1f4cc; 為什么需要WLAN&#xff1f;&#x1f4cc; 應用趨勢&#xff1a; ? 二、WLAN基本概念&#x1f4cc; WLAN定義&#x1f4cb; IEEE 802.11與Wi-Fi標準演進&#x1f4cb; 發展趨勢&#xff08;…

MultiTalk 是一種音頻驅動的多人對話視頻生成模型

TL;DR&#xff1a;MultiTalk 是一種音頻驅動的多人對話視頻生成。它支持多人對話&#x1f4ac;、唱&#x1f3a4;歌、交互控制和&#x1f46c;卡通&#x1f64a;的視頻創建。 視頻演示 001.mp4 004.mp4 003.mp4 002.mp4 005.mp4 006.mp4 003.mp4 002.mp4…

實現無縫連接:EtherNet/IP轉CANopen網關助力汽車制造智能化未來

在如今這個高度自動化的汽車制造行業&#xff0c;設備之間的互操作性變得越來越重要&#xff0c;在一條自動化裝配線上&#xff0c;貝加萊的PLC和CANopen伺服驅動器以及通過EtherNet/IP轉CANopen網關&#xff08;穩聯技術的WL-EIP-COP&#xff09;緊密合作&#xff0c;帶來了精…

音視頻之H.264的句法和語義

系列文章&#xff1a; 1、音視頻之視頻壓縮技術及數字視頻綜述 2、音視頻之視頻壓縮編碼的基本原理 3、音視頻之H.264/AVC編碼器原理 4、音視頻之H.264的句法和語義 在編碼器輸出的碼流中&#xff0c;數據的基本單位是句法元素。每個句法元素由若干比特組成&#xff0c;它表…