圖(dfs與bfs)算法2

進度:15/100

?

原題1:

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

(力扣的圖)

7f25abf3d049488bbc52834443f61b63.png

原題2:

給定二叉樹的根節點?root?,返回所有左葉子之和。

原題3:

給你一個二叉樹的根節點?root?,按?任意順序?,返回所有從根節點到葉子節點的路徑。

葉子節點?是指沒有子節點的節點。

原題4:

給你一個二叉樹的根節點?root?,判斷其是否是一個有效的二叉搜索樹。

有效?二叉搜索樹定義如下:

  • 節點的左子樹
    只包含?小于?當前節點的數。
  • 節點的右子樹只包含?大于?當前節點的數。
  • 所有左子樹和右子樹自身必須也是二叉搜索樹。

?

?

1.翻轉二叉樹--簡單

這次一反常態沒寫出遞歸寫出了迭代。

(1.迭代。每層每層反轉,x.right<-->x.left,若左右節點是存在的,就加入隊列。

(2.遞歸。有點抽象,自下而上翻轉二叉樹,因為葉節點反轉好就可以反轉子節點,而迭代是自上而下翻轉二叉樹。

?

?

2.左葉子之和--簡單

思路:

(1.遞歸。由于要計算的是“左”葉子之和,所以遞歸return的標志不應該是發現該節點為葉子節點然后貢獻給結果,而是發現當前節點的左子節點為葉子節點然后貢獻給結果。

(2.迭代。對于每個節點,若該節點的左節點是葉子節點,貢獻值;若不是葉子,加入棧中。對于右節點,若不是葉子節點,加入棧中。

?

?

3.二叉樹的所有路徑--簡單

思路:

(1.遞歸。感謝 to_string 救我于水火之中。

(2.迭代。感覺迭代的邏輯總是很強。用一個treenode隊列和一個string隊列來存當前到達節點和路徑,若該節點已經是葉子,就將路徑push進vector中,若不是,則分別判斷是否存在左子節點和右子節點,然后push進兩個隊列中。

學到寫法:q.push(path + "->" + to_string( root->left->val ));

?

?

4.驗證二叉搜索樹--中等

(1.遞歸。感覺官方題解的代碼好優美啊。從上往下遞歸的時候,函數帶有root,lower,upper,如果root的val不滿足大于lower或者小于upper,就return false,否則,繼續向下遍歷,遍歷左節點就將upper更新為root.val(因為對于左節點來說,root.val是比它大的最小數),右節點就更新lower為root.val(對于右節點來說,root.val是比它小的最大數)。

(2.迭代。我們用中序遍歷,那么該樹如果是二叉搜索樹,就一定是升序的。每次記錄最小值,然后將下一個值與最小值比較,如果小于最小值,就說明不是二叉搜索樹。我還是有點迷惑,可能本質上是因為我并沒有完全搞懂遍歷算法。

?

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

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

相關文章

《鴻蒙開發-答案之書》字符串占位符格式化

《鴻蒙開發-答案之書》字符串占位符格式化 先在string.json定義&#xff1a; {"name":"message_arrive","value":"We will arrive at %s."}使用&#xff0c;它有兩種使用方式&#xff1a; 方式一&#xff1a; Text($r(app.string.…

Redis bitmaps 使用

應用場景&#xff1a; 記錄id為 1 的用戶&#xff0c;2024年12月簽到情況&#xff0c;并統計&#xff1b; 記錄 1號簽到 zxys-redis:0>setbit 1:202412 1 1 記錄 2號簽到 zxys-redis:0>setbit 1:202412 2 1 記錄 3號未簽到 zxys-redis:0>setbit 1:202412 3 0 …

【微服務】SpringBoot 整合Redis Stack 構建本地向量數據庫相似性查詢

目錄 一、前言 二、向量數據庫介紹 2.1 什么是向量數據庫 2.2 向量數據庫特點 2.3 向量數據庫使用場景 三、常用的向量數據庫解決方案 3.1 Milvus 3.1.1 Milvus是什么 3.1.2 Milvus主要特點 3.2 Faiss 3.2.1 Faiss是什么 3.2.2 Faiss主要特點 3.3 Pinecone 3.3.1 …

【數據庫】大二數據庫復習范圍 (快速版)幫助你快速復習數據庫

第一章 1. 信息=數據+語義 2:數據庫管理系統(database management system, DBMS) 3. 數據庫系統(database system, DBS)由數據庫、數據庫用戶、計算機硬件系統和計算機軟件系統等幾部分組成 4. 數據模型按應用層次可分為概念模型、邏輯模型和物理模型。 5.每個二維表…

FMIKit-Simulink 常見問題解決方案

將解壓后的文件夾添加到 MATLAB 路徑中&#xff1a; addpath(fullfile(pwd, FMIKit-Simulink-3.1));初始化 FMIKit&#xff1a; FMIKit.initialize(); 設置求解器rtwsfcnfmi.tlc、或grtfmi.tlc再CtrlB即可。 幫助文檔可查看導出FUM和導入FMU。 FMIKit-Simulink-3.1\html\index…

UE UMG 多級彈出菜單踩坑

多級彈出菜單 https://www.bilibili.com/video/BV1ub411J7nA 運行時添加 widget 的方法 create widget 然后 add child 到某個組件&#xff0c;比如 canvas 運行時修改 widget 位置的方法 set widget slot position 用起來沒效果 懷疑是因為我沒有傳入 slot 但是暫時不知…

sunset: midnight

https://www.vulnhub.com/entry/sunset-midnight,517/ 主機發現端口掃描 探測存活主機&#xff0c;8是靶機 nmap -sP 192.168.56.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-05 16:49 CST Nmap scan report for 192.168.56.1 …

【PyTorch】動態調整學習率 torch.optim.lr_scheduler.StepLR 調度器

文章目錄 1. torch.optim.lr_scheduler.StepLR 官方文檔詳解2. 使用示例2.1 官方提供使用示例2.2 自己寫代碼測試方法2.2.1 get_last_lr() 方法2.2.2 state_dict() 方法2.2.3 load_state_dict() 保存和加載調度器 3. 思考3.1 為什么需要state_dict()3.2 get_lr() 與 get_last_l…

伊克羅德與九科信息共同發布RPA+AI智能機器人解決方案

12月12日&#xff0c;伊克羅德信息在上海舉辦“創見AI&#xff0c;邁進智能化未來——科技賦能零售電商”活動&#xff0c;與九科信息、亞馬遜云科技共同探討與分享&#xff0c;融合生成式AI技術和智能自動化&#xff08;RPA,Robotic Process Automation&#xff09;在電商零售…

hutool一些典型的方法使用筆記

hutool一些典型的方法使用筆記 1 克隆1.1 深克隆 2類型轉換2.1其他類型轉換為字符串2.2 轉換為日期對象2.3 數組轉集合2.4 Unicode和字符串轉換2.5 數字轉中文 文檔地址&#xff1a;https://blog.csdn.net/dxjren/article/details/144468399 1 克隆 1.1 深克隆 定義一個實體類…

QT實戰經驗總結 連載中

QT實戰經驗總結 在看書系統學習后&#xff0c;就開始實戰了&#xff0c;會遇到很多問題1.信號和槽的思考2.在python 或 C 代碼中&#xff0c;對 QML 代碼中控件的調用關于在一個窗口上不斷打開新窗口 在看書系統學習后&#xff0c;就開始實戰了&#xff0c;會遇到很多問題 pyt…

從 CephFS 到 JuiceFS:同程旅行億級文件存儲平臺構建之路

隨著公司業務的快速發展&#xff0c;同程旅行的非結構化的數據突破 10 億&#xff0c;在 2022 年&#xff0c;同程首先完成了對象存儲服務的建設。當時&#xff0c;分布式文件系統方面&#xff0c;同程使用的是 CephFS&#xff0c;隨著數據量的持續增長&#xff0c;CephFS 的高…

固定資產分類,提升資產盤活效益

固定資產是企業長期使用的重要資源&#xff0c;涵蓋范圍廣、種類多&#xff0c;不同的資產需要針對性管理。通過科學的分類與高效的盤活策略&#xff0c;不僅可以優化資源配置&#xff0c;還能提升企業資產的利用效率和經濟效益。以下將詳細解析固定資產的分類方式和盤活效益的…

富途證券C++面試題及參考答案

C++ 中堆和棧的區別 在 C++ 中,堆和棧是兩種不同的內存區域,它們有許多區別。 從內存分配方式來看,棧是由編譯器自動分配和釋放的內存區域。當一個函數被調用時,函數內的局部變量、函數參數等會被壓入棧中,這些變量的內存空間在函數執行結束后會自動被釋放。例如,在下面的…

【字符串匹配算法——BF算法】

&#x1f308;個人主頁: Aileen_0v0 &#x1f525;熱門專欄: 華為鴻蒙系統學習|計算機網絡|數據結構與算法 ?&#x1f4ab;個人格言:“沒有羅馬,那就自己創造羅馬~” 文章目錄 BF算法介紹及過程演示代碼實現過程下節預告KMP算法利用next數組存儲子串中j回退的位置&#xff08;…

Linux 文件系統目錄結構及其簡要介紹

Hello! 親愛的小伙伴們&#xff0c;大家好呀&#xff08;Smile~&#xff09;&#xff01;我是 H u a z z i Huazzi Huazzi&#xff0c;歡迎觀看本篇博客&#xff0c;接下來讓我們一起來學習一下Linux 文件系統目錄結構吧&#xff01;祝你有所收獲&#xff01; 本篇博客的目錄&a…

小米準備入局Nas?Nas究竟是啥?能干啥?

一開頭就來了個三連問&#xff1a;小米準備入局Nas&#xff1f;Nas究竟是啥&#xff1f;Nas能干啥&#xff1f; 好像這段時間Nas這個詞頻頻出現&#xff0c;但很多小伙伴都不知道這個是什么設備。首先咱們來解決一下名詞Nas是什么意思。 什么是Nas&#xff1f; 為了盡可能解釋…

基于Socket實現客戶端和服務端的Tcp通信(C#)

0.前言 使用C#和Unity實現復刻Liar’s bar中的功能 軟件開發大作業 本系列文章用于記錄與分享開發過程中使用到的知識點&#xff0c;以及常見錯誤 本文主要描述有關網絡編程的內容 目錄 0.前言1.使用Socket搭建Server1.1Server端的Socket連接1.2 Server端接收Client的信息1.3…

【mysql】如何查看大表記錄行數

目錄 1. 使用 ANALYZE TABLE 和 SHOW TABLE STATUS2. 查詢 INFORMATION_SCHEMA 表3. 使用索引統計信息4. 維護行數緩存5. 使用分區計數 1. 使用 ANALYZE TABLE 和 SHOW TABLE STATUS 1.ANALYZE TABLE 可以更新表的統計信息&#xff0c;然后使用 SHOW TABLE STATUS 來查看估算的…

文件斷點續傳(視頻播放,大文件下載)

客戶端每次請求取大文件部分數據。 瀏覽器播放mp4視頻時&#xff0c;會首先傳Range消息頭&#xff0c;檢測到206狀態碼&#xff0c;和Content-Range&#xff0c;Accept-Ranges 會自動請求余下數據。后端需要在文件任意偏移量取數據。 參考&#xff1a; springboot項目實現斷…