★【二叉搜索樹(中序遍歷特性)】【 ★遞歸+雙指針】Leetcode 98. 驗證二叉搜索樹

★【二叉搜索樹(中序遍歷特性)】【 ★遞歸+雙指針】Leetcode 98. 驗證二叉搜索樹

    • 二叉搜索樹
  • 98. 驗證二叉搜索樹
    • 解法1 笨 中序遞歸遍歷為一個數組 然后判斷數組是不是升序排列就可以
    • ★解法2 不使用數組 遞歸法

---------------🎈🎈題目鏈接🎈🎈-------------------

二叉搜索樹

二叉搜索樹


98. 驗證二叉搜索樹

在這里插入圖片描述


解法1 笨 中序遞歸遍歷為一個數組 然后判斷數組是不是升序排列就可以

二叉搜索樹的特性:中序遍歷是單調遞增的

時間復雜度:
中序遍歷二叉搜索樹的時間復雜度為 O(n),其中 n 是二叉樹中節點的數量。
檢查列表是否按升序排列的時間復雜度為 O(n)。
因此,總的時間復雜度為 O(n)。

空間復雜度:
存儲節點值的列表的空間復雜度為 O(n),因為需要存儲整個樹的節點值。
遞歸調用時的棧空間復雜度取決于樹的高度,最壞情況下為 O(n),平均情況下為 O(log n),其中 n 是樹中的節點數量。
因此,總的空間復雜度為 O(n)。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public boolean isValidBST(TreeNode root) {// 中序遞歸遍歷為一個數組 然后判斷數組是不是升序排列就可以List<Integer> mylist = new ArrayList<>();helper(root,mylist);for(int i = 0; i < mylist.size(); i++){if(i>0 && (long)mylist.get(i)-(long)mylist.get(i-1) <= 0){return false;}}return true;}public void helper(TreeNode root,List<Integer> mylist){if(root == null) return ;helper(root.left,mylist);mylist.add(root.val);helper(root.right,mylist);}
}

★解法2 不使用數組 遞歸法

另一個題也是這樣 530. 二叉搜索樹的最小絕對差


class Solution {TreeNode pre = null;  public boolean isValidBST(TreeNode root) {// 不用數組直接用二叉樹結構進行判斷if(root == null) return true;  // 終止條件// 中序遍歷順序 當前的和前一個進行比較boolean left = isValidBST(root.left); // 左if(pre!= null && root.val <= pre.val){ // 中return false;}pre = root;boolean right = isValidBST(root.right); //右if(left && right) return true;else return false;}
}

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

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

相關文章

【力扣】無重復字符的最長子串,滑動窗口 + 哈希集合

無重復字符的最長子串原題地址 方法一&#xff1a;滑動窗口&#xff08;雙指針&#xff09; 哈希集合 考慮找出字符串s的所有的無重復字符的子串&#xff0c;求出這些子串長度的最大值即可。 使用下標 [left,right] 來維護子串。我們只需要找到每一個 left 對應的所有 righ…

php PhpSpreadsheet 讀取日期變數字問題解決

問題描述&#xff1a; 使用PhpSpreadsheet 讀取表格數據&#xff0c;日期格式讀取后變成數字&#xff0c;如下圖&#xff1a; 解決方案&#xff1a; $cell $sheet->getCell(H . $row)->getValue(); $toTimestamp \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimes…

騰軒科技傳媒探討網絡整合營銷推廣的策略和效果

在當今高度信息化的商業環境中&#xff0c;整合營銷推廣&#xff08;IMC&#xff09;已經成為了品牌營銷策略的核心。它旨在通過多種渠道和平臺&#xff0c;將一致、連貫的品牌信息傳達給目標受眾&#xff0c;從而增強品牌知名度和忠誠度。騰軒科技傳媒將深入探討整合營銷推廣的…

【airtest】自動化入門教程(一)AirtestIDE

目錄 一、下載與安裝 1、下載 2、安裝 3、打開軟件 二、web自動化配置 1、配置chrome瀏覽器 2、窗口勾選selenium window 三、新建項目&#xff08;web&#xff09; 1、新建一個Airtest項目 2、初始化代碼 3、打開一個網頁 四、恢復默認布局 五、新建項目&#xf…

模擬算法題練習(一)

模擬算法介紹&#xff1a; 模擬算法通過模擬實際情況來解決問題&#xff0c;一般容易理解但是實現起來比較復雜&#xff0c;有很多需要注意的細節&#xff0c;或者是一些所謂很“麻模“的東西。 模擬題一般不涉及太難的算法&#xff0c;一般就是由較多的簡單但是不好處理的部…

【算法】最小生成樹—Prim算法與Kruskal算法

Prim算法和Kruskal算法都是解決最小生成樹問題的經典算法。最小生成樹是原圖的最小連通子圖&#xff0c;它包含原圖的全部結點&#xff0c;且保持圖連通的所有邊代價和最小。一個連通圖可能有多個最小生成樹。 一、Prim算法 含義 Prim算法&#xff0c;也被稱為普里姆算法&…

基于移動端的食堂助餐在線點餐配送系統 uniapp微信小程序

本文從管理員、老人、配送員、食堂商家的功能要求出發&#xff0c;養老助餐管理系統小程序中的功能模塊主要是實現老人、配送員、食堂商家、食堂大廳、預約選座、餐號信息、美食信息、美食訂單、訂單信息、訂單配送、訂單評價、老人食堂、下單信息、飲食分析。經過認真細致的研…

C語言可以干些什么?C語言主要涉及哪些IT領域?

C語言可以干些什么&#xff1f;C語言主要涉及哪些IT領域&#xff1f; 在開始前我有一些資料&#xff0c;是我根據網友給的問題精心整理了一份「C語言的資料從專業入門到高級教程」&#xff0c; 點個關注在評論區回復“888”之后私信回復“888”&#xff0c;全部無償共享給大家…

我在爭什么?

本來想寫一下2024項目部人員該怎么干&#xff0c;還沒有寫出來&#xff0c;大家內部就先動起來。針對現有情況做了分析&#xff1a; 作為項目人員&#xff08;實施&#xff0c;運維&#xff09; 需要有一定自我認識 認識清楚公司要什么&#xff1f; 認識清楚我自己要什么&…

內網安裝redis+部署redis-cluster集群

一、安裝redis redis安裝包下載地址&#xff1a; https://download.redis.io/releases/ 1.1 解壓編譯并創建數據目錄 tar xzvf redis-6.2.10.tar.gz -C /usr/local/ cd /usr/local/ mv redis-6.2.10/ redis cd /usr/local/redis/ make #編譯 …

Springboot整合SSE實現實時消息推送

SSE詳細介紹傳送門&#xff1a;SSE實時消息推送 簡單描述一下SSE推送在實際項目中應用的常見場景 1&#xff0c;項目頁面中有消息通知板塊&#xff0c;當信息有變化時&#xff0c;只有手動刷新頁面&#xff0c;才會看到最新的數據&#xff0c;這里可以采用SSE技術實時推送最新…

Docker技術概論(1):Docker與虛擬化技術比較

Docker技術概論&#xff08;1&#xff09; Docker與虛擬化技術比較 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https:…

深入解析Android-AutoLayout,2024安卓開發面試題及答案

前言 如果你也學習Android&#xff0c;那么你大概率會看過我的文章。經常有讀者給我留言&#xff1a;“該怎么學習Android&#xff1f;”、“日常學習Android的方法是什么”。 所以&#xff0c;今天&#xff0c;我將獻上一份《Android知識圖譜》&#xff0c;以自身的經驗 &…

ABAP 發送帶EXCEL郵件

前言 沒啥特殊需求&#xff0c;就是有個庫齡報表用戶想整郵件發送 實現 用的最簡單的XLS文件作為excel附件發送出去 觀察XLS文件的純文本格式&#xff0c;每列之間用TAB制表符分隔&#xff0c;每行之間用回車符分隔 思路也比較明確&#xff0c;在SAP中實現這種格式&#xf…

.Net利用Microsoft.Extensions.DependencyInjection配置依賴注入

一、概述 為了讓接口程序更加模塊化和可測試,采用依賴注入的方式調用接口方法。 二、安裝Microsoft.Extensions.DependencyInjection 在NuGet里面搜索Microsoft.Extensions.DependencyInjection,并進行安裝。 三、代碼編寫 3.1 創建Service 實現類 /*****************…

【跨境電商須知】FP獨立站的特點和痛點有哪些?

無論是做獨立站&#xff0c;還是做亞馬遜&#xff0c;都有各自的難點。自己做獨立站若要在跨境行業長足發展&#xff0c;既要知道FP獨立站有什么特點&#xff0c;要清楚FP獨立站的痛點并一一克服。 一、FP獨立站的特點 與依賴第三方平臺相比&#xff0c;擁有自己的域名、服務器…

Doccano 修復 spacy.gold 的bug

引言 最初只是想把Doccano標注的數據集轉換成BIO(類似conll2003數據集)的標注格式&#xff1b; 摘要 可先閱讀一下教程&#xff1a;【已解決】關于如何將Doccano標注的文本轉換成NER模型可以直接處理的CoNLL 2003格式 裝包:pip install doccano-transformer 報錯信息 運行…

Adam優化算法

Adam算法&#xff08;Adaptive Moment Estimation&#xff09;是一種用于深度學習模型優化的算法&#xff0c;它結合了動量&#xff08;Momentum&#xff09;和RMSprop&#xff08;Root Mean Square Propagation&#xff09;的概念。Adam算法自2015年提出以來&#xff0c;因其高…

【前端素材】推薦優質后臺管理系統DAdmin平臺模板(附源碼)

一、需求分析 1、系統定義 后臺管理系統是一種用于管理網站、應用程序或系統的管理界面&#xff0c;通常由管理員和工作人員使用。它提供了訪問和控制網站或應用程序后臺功能的工具和界面&#xff0c;使其能夠管理用戶、內容、數據和其他各種功能。 2、功能需求 后臺管理系…

FreeCAD|讀取STEP、創建平面、相交、瓶子

FreeCAD是一個基于OpenCASCADE的開源CAD/CAE工具。OpenCASCADE是一套開源的CAD/CAM/CAE幾何模型核心&#xff0c;來自法國Matra Datavision公司&#xff0c;是著名的CAD軟件EUCLID的開發平臺。FreeCAD可運行于Windows以及Linux系統環境下&#xff0c;是一種通用的3D CAD建模工具…