圖(dfs與bfs)算法1

開辟新專題!不擅長的圖它來了來了!(莫名激動

進度:10/100

另:沒想到給自己挖了個坑,可以用dfs的基本上也可以用bfs,看來要雙線并行了。

補:圖算法是我近期得有30%的焦慮來源了,但是不管三七二十一,奧力給,干他兄弟們!

c462fcbb2bd541b4840d96763feb3048.png

兩周的提交記錄。努力努力再努力!

?

原題1:

給你二叉樹的根節點?root?,返回它節點值的?前序?遍歷。

原題2:

給定一個二叉樹的根節點?root?,返回?它的?中序?遍歷?。

原題3:

給你一棵二叉樹的根節點?root?,返回其節點值的?后序遍歷?

原題4:

給你二叉樹的根節點?root?,返回其節點值的?層序遍歷?。 (即逐層地,從左到右訪問所有節點)。

原題5:

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

原題6:

給你二叉樹的根節點?root?和一個表示目標和的整數?targetSum?。判斷該樹中是否存在?根節點到葉子節點?的路徑,這條路徑上所有節點值相加等于目標和?targetSum?。如果存在,返回?true?;否則,返回?false?。

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

原題7:

給你二叉樹的根節點?root?和一個整數目標和?targetSum?,找出所有?從根節點到葉子節點?路徑總和等于給定目標和的路徑。

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

原題8:

給定一個二叉樹,找出其最小深度。

最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。

說明:葉子節點是指沒有子節點的節點。

原題9:

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

? (平衡二叉樹?是指該樹所有節點的左右子樹的高度相差不超過 1。)

?

?

1.二叉樹的前序遍歷--簡單

中左右。

(1.遞歸。

(2。迭代。當棧不為空或節點不為空時,我們將root->val加入vector,一直入棧root的左節點直至root為空,說明左節點已經遍歷完,root指向棧頂的右節點,繼續循環。

(3.Morris迭代。還不會

?

2.二叉樹的中序遍歷--簡單

左中右。

棧的用法:

stk.top(),stk.pop(),stk.push()

思路:

(1.遞歸。先遍歷左節點,再將根節點入vector,再遍歷右節點。

(2.迭代。so,迭代與遞歸到底有什么區別,我一直認為他倆一樣。

區別:迭代是通過調用一個迭代器解決問題,譬如用一個for循環來計算1~100的和。遞歸是通過反復調用自身來解決問題。

我們使用一個棧,在它不為空或者節點不為空時,一直循環將當前指針指向左直至當前為空,然后將棧首出隊(此時當前節點已經沒有左節點,所以按中序遍歷原理,該根節點可以入vector了),入vector,當前節點再指向右(該節點左中都入vector了,該將右節點入vector了),然后循環。

(3.Morris迭代。

?

3.二叉樹的后序遍歷--簡單

左右中。

(1.遞歸。

(2.迭代。咱們就是說,一整個茅塞頓開,恍然大悟啊。后序遍歷是左右中,利用棧先入后出的特性,我們按中右左給節點壓進去,最后反轉一下vector就行了,

(3.Morris迭代。還不會

?

4.二叉樹的層序遍歷--簡單

(1.遞歸。忘記depth這個可利用的數據了。

(2.迭代。一層一層入總vector,即:每次隊列只會含有這一層的節點。注意,root!=nullptr是什么鬼循環判斷條件啊。

?

?

5.對稱二叉樹--簡單

隊列用法:

q.front(),q.pop(),q.push()

思路:

(1.遞歸。不簡述了,同上思路。要是世界的原理像遞歸一樣簡單就好了。

(2.迭代。簡直了,遞歸就像dfs的代名詞,迭代就是bfs的代名詞(阿雞瞎說,別打我)

用隊列來存,先入隊兩個頭節點,然后每次取出隊列頭部兩個節點進行比較,false的就考慮false的情況,暫時沒出錯的就將root1->left,root2->right,root1->right,root2->left入隊。

?

?

6.路徑總和--簡單

思路:

(1.遞歸。

(2.迭代。我發現dfs和bfs相對于別的算法沒有那么多細節,基本上邏輯對了代碼就對。

用兩個隊列分別存當前訪問的節點和當前節點的路徑總和。如果是葉子節點,檢查總和是否等于目標總和。將該節點存在的子節點與其路徑和入隊,循環進行至隊列為空(所有節點都遍歷完)為止。

?

?

7.路經總和 II--中等

(1.遞歸。有意思的是回溯的話,vector也會跟著回溯,不需要刪除上一輪加進去的元素。

?

8.二叉樹的最小深度--簡單

單純就想把這個題作為風向標放這,證明我兩種解法的碼都是自己敲出來的,吾已小成!喔哈哈哈哈

?

9.平衡二叉樹:
思路:

(1.自上而下遞歸。

(2.自下而上遞歸。有意思的是left和right都先等于其左右節點的子樹的值,然后看是否高度相差大于1或者子樹中有高度為-1,有則返回-1;沒有則返回高子樹+1。

?

彩蛋:

官方題解的優雅代碼:

return max(maxDepth(root->left), maxDepth(root->right)) + 1;

?

?

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

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

相關文章

Ruby On Rails 筆記3——表的增刪改查

1.Migration Migrations是一種便利的方法,能以重現的方式隨時間推移改變數據庫schema. 使用Ruby Domain Specific Language (DSL),因此你不用手寫SQL,進而使你的schema和changes與數據庫獨立。 可以把每次migration看作是數據庫的一個新“版本”。A schema開始時什么都沒有…

一、測試工具LoadRunner Professional腳本編寫-錄制前設置

設置基于URL的腳本 原因:基于HTML的腳本會導致login接口不能正確錄制 設置UTF-8 原因:不勾選此項會導致腳本中文變為亂碼

14、鴻蒙學習——管理通知角標

針對未讀的通知,系統提供了角標設置接口,將未讀通知個數顯示在桌面圖標的右上角角標上。 通知增加時,角標上顯示的未讀通知個數需要增加。 通知被查看后,角標上顯示的未讀通知個數需要減少,沒有未讀通知時&#xff0…

Thonny IDE + MicroPython + ESP32 + GY-302 測量環境中的光照強度

GY-302是一款基于BH1750FVI光照強度傳感器芯片的模塊。該模塊能夠直接測量出環境中的光照強度,并將光照強度轉換為數字信號輸出。其具體參數如下表所示。 參數名稱 參數特性 測量范圍 0-65535 LX 測量精度 在環境光下誤差小于20%,能夠自動忽略50/60…

AJAX和XHR、fetch、axios的關系

AJAX中有兩套原生的API,一個是XHR(XMLHttpRequest),一個是Fetch API axios是第三方庫,在瀏覽器環境中使用的是XHR umi-request也是第三方庫,在瀏覽器環境中使用的是Fetch 在 AJAX(Asynchronous JavaScript and XML&am…

openlayers地圖緩存添加

//通過安裝包localforage(npm install localforage)或https://cdnjs.cloudflare.com/ajax/libs/localforage/1.10.0/localforage.min.js tileCacheStore.js import localforage from localforage var tileCacheStorenull;// 從緩存中獲取該瓦片 functio…

云軸科技ZStack出席中國電信國際EMCP平臺香港發布會,持續推動海外合作

近日,以“云聚未來 翼起新篇”為主題的中國電信國際多云服務一站式平臺(E-surfing Managed Cloud Platform,簡稱EMCP平臺)新聞發布會在香港成功舉辦,標志著中國電信國際在云計算服務領域取得了又一重大進展。云軸科技…

面試復盤 part 02·1202-1207 日

作品集講述部分 分析反思 作品集講述部分,視覺講述部分需要更換,需要換成其他視覺相關的修改 具體話術 這是一個信息展示優化方案,用戶為財務,信息區分度不足,理解成本較高,因此選擇需要降低理解成本。…

2024.11.29——[HCTF 2018]WarmUp 1

拿到題&#xff0c;發現是一張圖&#xff0c;查看源代碼發現了被注釋掉的提示 <!-- source.php--> step 1 在url傳參看看這個文件&#xff0c;發現了這道題的源碼 step 2 開始審計代碼&#xff0c;分析關鍵函數 //mb_strpos($haystack,$needle,$offset,$encoding):int|…

brpc的二次封裝以及brpc與etcd的聯合

目的&#xff1a; 搭配etcd的注冊中心管理能知道誰能提供什么服務&#xff0c;并用rpc進行服務調用 封裝思想&#xff1a; 信道管理&#xff0c;將不同服務主機的通信信道管理起來 封裝&#xff1a; 1.指定的信道管理類 一個服務通常會有多個節點&#xff0c;每個節點都會…

【提升效率】如何寫好一份詳細設計文檔

版本日期修訂人描述V1.02024/12/6nick huang創建文檔 背景 CSDN在發起“如何做好一份技術文檔”的活動。 想起我最近在寫一份詳細設計&#xff0c;有一些感受&#xff1a; 一份考慮較周全的“詳細設計文檔模板”能起到質量保底的作用。 當一名初級技術人員需要編寫詳細設計文…

電阻計RM3544、RM3545的使用

目錄&#xff1a; 一、電阻計與PC通訊 1、硬件連接 2、RmLogger.exe的使用 二、RM3545測量35uΩ電阻 一、電阻計與PC通訊 1、硬件連接 可以設置USB或COM口(串口)連接PC&#xff0c;也可以設置為“打印”輸出。 1&#xff09;使用USB連接PC 2&#xff09;使用串口連接PC …

Jenkins 的HTTP Request 插件為什么不能配置Basic認證了

本篇遇到的問題 還是因為Jenkins需要及其所在的OS需要升級&#xff0c;升級策略是在一臺新服務器上安裝和配置最新版本的Jenkins&#xff0c; 當前的最新版本是&#xff1a; 2.479.2 LTS。 如果需要這個版本的話可以在官方站點下載&#xff0c;也可以到如下地址下載&#xff1…

uniapp 封裝自定義頭部導航欄

封裝原因 項目中有時候需要使用自定義的頭部導航欄&#xff0c;原生的無法滿足需求 參數 屬性名描述示例title標題字符串&#xff1a;首頁bgColor背景色字符串&#xff1a;#ffftype左側的操作內容字符串&#xff1a;all&#xff0c;詳細值請在下方查看 參數解釋 type all…

docker學習筆記(五)--docker-compose

文章目錄 常用命令docker-compose是什么yml配置指令詳解versionservicesimagebuildcommandportsvolumesdepends_on docker-compose.yml文件編寫 常用命令 命令說明docker-compose up啟動所有docker-compose服務&#xff0c;通常加上-d選項&#xff0c;讓其運行在后臺docker-co…

Linux中inode

磁盤的空間管理 如何對磁盤空間進行管理&#xff1f; 假設在一塊大小為500G的磁盤中&#xff0c;500*1024*1024524288000KB。在磁盤中&#xff0c;扇區是磁盤的基本單位&#xff08;一般大小為512byte&#xff09;&#xff0c;而文件系統訪問磁盤的基本單位是4KB&#xff0c;因…

5G揚帆乘勁風,遨游通訊賦能千行百業譜新篇

在大型工廠&#xff0c;輕觸手機屏幕&#xff0c;實時庫存數據、人員定位等信息便躍然眼前、一目了然&#xff1b;在邊遠油田&#xff0c;動動手指&#xff0c;即可實時查詢設備溫度、危險氣體濃度等信息&#xff0c;大數據瞬間盡在“掌”握……在遨游5G防爆智能手機的助力下&a…

RT Thread Studio新建STM32F407IG工程文件編譯提示錯誤

編譯提示錯誤 原因: RT 源碼使用4.0.3的話&#xff0c;請用STM32F4支持包的0.2.2版本&#xff0c;就不會出錯了。 如果支持包用0.2.3版本的話&#xff0c;需要用RT內核4.1.0版本。0.2.3 版本更新了一些針對內核4.1.0的驅動代碼&#xff0c;這幾個定義都是4.1.0里的。

學生管理系統(java)

1.前期準備 &#xff08;1&#xff09;新建java項目 &#xff08;2&#xff09;新建java軟件包以及三個文件Student.java,Student.txt,StuSystem.java Student.java package student_management_system;public class Student {private String id;private String name;private…

JavaWeb學習(2)(Cookie原理(超詳細)、HTTP無狀態)

目錄 一、HTTP無狀態。 &#xff08;1&#xff09;"記住我"&#xff1f; &#xff08;2&#xff09;HTTP無狀態。 &#xff08;3&#xff09;信息存儲客戶端中。如何處理&#xff1f; 1、loaclStorage與sessionStorage。 2、Cookie。 二、Cookie。 &#xff08;1&…