力扣每日一題day34[110. 平衡二叉樹]

給定一個二叉樹,判斷它是否是高度平衡的二叉樹。

本題中,一棵高度平衡二叉樹定義為:

一個二叉樹每個節點?的左右兩個子樹的高度差的絕對值不超過 1 。

示例 1:

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

示例 2:

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

示例 3:

輸入:root = []
輸出:true
  • 二叉樹節點的深度:指從根節點到該節點的最長簡單路徑邊的條數。

  • 二叉樹節點的高度:指從該節點到葉子節點的最長簡單路徑邊的條數。

但leetcode中強調的深度和高度很明顯是按照節點來計算的

關于根節點的深度究竟是1 還是 0,不同的地方有不一樣的標準,leetcode的題目中都是以節點為一度,即根節點深度是1。

遞歸三步曲分析:

明確遞歸函數的參數和返回值

參數:當前傳入節點。 返回值:以當前傳入節點為根節點的樹的高度。

那么如何標記左右子樹是否差值大于1呢?

如果當前傳入節點為根節點的二叉樹已經不是二叉平衡樹了,還返回高度的話就沒有意義了。

所以如果已經不是二叉平衡樹了,可以返回-1 來標記已經不符合平衡樹的規則了。

代碼如下:

// -1 表示已經不是平衡二叉樹了,否則返回值是以該節點為根節點樹的高度
int getHeight(TreeNode root)

明確終止條件

遞歸的過程中依然是遇到空節點了為終止,返回0,表示當前節點為根節點的樹高度為0

代碼如下:

if (root == null) {return 0;
}

明確單層遞歸的邏輯

如何判斷以當前傳入節點為根節點的二叉樹是否是平衡二叉樹呢?當然是其左子樹高度和其右子樹高度的差值。

分別求出其左右子樹的高度,然后如果差值小于等于1,則返回當前二叉樹的高度,否則返回-1,表示已經不是二叉平衡樹了。

class Solution {public boolean isBalanced(TreeNode root) {return getHeight(root) != -1;}
?private int getHeight(TreeNode root) {if (root == null) {return 0;}int leftHeight = getHeight(root.left);if (leftHeight == -1) {return -1;}int rightHeight = getHeight(root.right);if (rightHeight == -1) {return -1;}// 左右子樹高度差大于1,return -1表示已經不是平衡樹了if (Math.abs(leftHeight - rightHeight) > 1) {return -1;}return Math.max(leftHeight, rightHeight) + 1;}
}

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

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

相關文章

wappalyzer基于插件的網站開發技術解析工具

一、wappalyzer 解釋:這是一款強大的工具,其主要能提供一種快速、可靠地檢測網站所使用技術棧的方法,也就說說,服務器發來的信息都會被它剖析,然后分析出前端的技術棧,有時后端所使用的技術棧如果網頁特征…

[ 藍橋杯Web真題 ]-冬奧大抽獎

目錄 介紹 準備 目標 規定 思路 知識補充 解法參考 介紹 藍橋云課慶冬奧需要舉行一次抽獎活動,我們一起做一個頁面提供給云課冬奧抽獎活動使用。 準備 開始答題前,需要先打開本題的項目代碼文件夾,目錄結構如下: ├──…

甲醛處理企業網站效果如何

甲醛往往是新裝房間主所擔心的問題,而甲醛處理公司則可以處理甲醛問題,市場需求也比較高,雖然具備同城服務屬性,但外地或連鎖經營也非常適合,而品牌們也遇到一些痛點: 1、品牌宣傳拓客難 甲醛處理公司也需…

公司app定制開發 ,打造專屬企業移動應用

公司app定制:打造專屬企業移動應用 在當今數字化時代,移動應用已經成為了人們生活中不可或缺的一部分,越來越多的企業也意識到了移動應用對于企業形象和業務拓展的重要性,為了滿足企業的需求,公司app定制服務應運而生…

基于查表法的水流量算法設計與實現

寫在前面 本文分享的是一種基于查表法的水流量的算法方案設計與實現,算法簡單易懂,主要面向初學者,有兩個目的:一是給初學者一些算法設計的思路引導;二是引導初學者學習怎樣用C語言編程實現。 一、設計需求 基于“19…

C++ 中的引用

文章目錄 C 引用的應用1. 修改函數中傳遞的參數2. 避免復制大型結構3. for 循環中修改所有對象4. for 循環中避免復制對象 References vs Pointers引用的限制使用引用的優點練習Quesition 1Question 2Question 3Question 4Question 5Question 6 如果一個變量被聲明為引用&#…

Android-Framework 默認橫屏、dpi設置

一、環境 高通865 Android 10 二、源碼修改位置 1、修改dpi device/qcom/kona/kona.mk -116,7 116,7 TARGET_USES_RRO : true# system prop for Bluetooth SOC typePRODUCT_PROPERTY_OVERRIDES \vendor.qcom.bluetooth.sochastings \ - ro.sf.lcd_density480ro.sf.lcd_d…

Python中的logging介紹

Python中的logging模塊是一個強大的、靈活的、可配置的日志記錄系統。它允許你在不修改源代碼的情況下記錄錯誤和調試信息,同時也可以對日志信息進行各種處理,例如寫入到文件、輸出到控制臺、記錄到數據庫等。 logging模塊提供了一種用于日志記錄的通用接…

液態二氧化碳儲存罐遠程無線監測系統

二氧化碳強化石油開采技術,須先深入了解石油儲層的地質特征和二氧化碳的作用機制。現場有8輛二氧化碳罐裝車,每輛罐車上有4臺液態二氧化碳儲罐,每臺罐的尾部都裝有一臺西門子S7-200 smart PLC。在注入二氧化碳的過程中,中控室S7-1…

國產單片機XL32F001,價格便宜,性價比高,32位M0+內核

XL32F001芯片簡介 1、是一個32位ARM架構Cortex -M0系列的單片機 2、系統工作頻率最高為24MHz 3、擁有24Kbytes Flash存儲器和3Kbytes SRAM 4、擁有內部24MHz和32.768MHz的RC振蕩器(HSI和LSI),擁有32.768KHz低速晶體振蕩器(LSE…

JVM內存模型+JVM類加載機制

jvm內存模型包括哪些以及各自作用 主要包括類加載 對象創建 方法調用 本地方法區 程序計數 方法區: class文件加載到方法區 堆: 對象創建在堆內存中 jvm棧:方法調用入棧 本地方法棧:主要是c寫的一些方法 程序計數器:存…

OneNote for Windows10 徹底刪除筆記本

找了超多方法,都沒有用,我的OneNote都沒有文件選項,要在OneDrive中刪除,但是一直登不進,然后又找到一個方法: 在網頁中打開Office的控制面板 "Sign in to your Microsoft account" 在“最近”一…

【強化學習-讀書筆記】多臂賭博機 Multi-armed bandit

參考 Reinforcement Learning, Second Edition An Introduction By Richard S. Sutton and Andrew G. Barto強化學習與監督學習 強化學習與其他機器學習方法最大的不同,就在于前者的訓練信號是用來評估(而不是指導)給定動作的好壞的。 …

第21章網絡通信

網絡程序設計基礎 網絡程序設計編寫的是與其他計算機進行通信的程序。Java 已經將網絡程序所需要的元素封 裝成不同的類,用戶只要創建這些類的對象,使用相應的方法,即使不具備有關的網絡支持,也可 以編寫出高質量的網絡通信程序…

2023年【危險化學品生產單位安全生產管理人員】考試題庫及危險化學品生產單位安全生產管理人員考試技巧

題庫來源:安全生產模擬考試一點通公眾號小程序 危險化學品生產單位安全生產管理人員考試題庫是安全生產模擬考試一點通總題庫中生成的一套危險化學品生產單位安全生產管理人員考試技巧,安全生產模擬考試一點通上危險化學品生產單位安全生產管理人員作業…

【教程】制作 iOS 推送證書

如需向 iOS 設備推送數據,您首先需要在消息推送控制臺上配置 iOS 推送證書。iOS 推送證書用于推送通知,本文將介紹消息推送服務支持的證書類型,并引導您制作 iOS 推送證書。 證書類型 消息推送服務僅支持 Apple Push Service 類型的證書。有…

react Hooks之useDebugValue

1、作用: 用于在開發過程中幫助開發者調試自定義 Hook。它的作用是將自定義 Hook 中的某些值暴露給 React 開發工具(例如 React DevTools)以便于調試。 當我們使用 React 開發工具查看組件的狀態時,React DevTools 會從組件和其…

鴻蒙(HarmonyOS)應用開發——保存應用數據

保存應用數據 harmonyOS系統提供了四種數據存儲方式 #mermaid-svg-kZlN0CFY1VGySIPo {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kZlN0CFY1VGySIPo .error-icon{fill:#552222;}#mermaid-svg-kZlN0CFY1VGySIPo .…

競賽保研 LSTM的預測算法 - 股票預測 天氣預測 房價預測

0 簡介 今天學長向大家介紹LSTM基礎 基于LSTM的預測算法 - 股票預測 天氣預測 房價預測 這是一個較為新穎的競賽課題方向,學長非常推薦! 🧿 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 1 基于 Ke…

Android RecyclerView 動畫處理 流程 原理(源碼分析第二篇)

零、本文主題 本文要解決的問題: 1. Recyclerview 動畫的實現原理是什么? 2. 處理的主要流程大概是怎樣的? 一、核心原理 我們拋開代碼,想一下,RecyclerView中的view動畫有幾種? 添加一個view:…