二叉樹的廣度優先搜索(層次遍歷)

目錄

定義

層序遍歷的數據結構

實現過程簡述

具體代碼


定義

層序遍歷就是從左到右一層一層地遍歷二叉樹。

層序遍歷的數據結構

層序遍歷需要借用一個輔助數據結構實現,由于隊列具有先進先出的特性,符合一層一層遍歷的邏輯,而棧先進后出更適合模擬深度優先遍歷(遞歸)。

實現過程簡述

首先如果根節點不為空,就將根節點放入隊列里。然后設置循環,循環結束條件為隊列為空(這樣就可以保證遍歷完二叉樹中的每一個節點)。循環體里記錄每層的節點數量,并設置一個節點指針保存隊列首元素(以便后續使用),將首元素的值放入一個一維數組中,然后彈出首元素。使用節點指針將該節點的左子節點和右子節點放入隊列。一層結束將一維數組push進結果數組(二維數組)里。遍歷完畢返回結果數組。

具體代碼

class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {queue<TreeNode*> que;vector<vector<int>> result;if(root != nullptr) que.push(root);while(!que.empty()) {int size = que.size();vector<int> vec;while(size--) {TreeNode* node = que.front();que.pop();vec.push_back(node->val);if(node->left) que.push(node->left);if(node->right) que.push(node->right);}result.push_back(vec);} return result;}
};

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

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

相關文章

PHP框架之Laravel框架

Laravel框架詳解 Laravel&#xff0c;作為一款廣受歡迎的PHP Web開發框架&#xff0c;以其優雅、簡潔的語法和強大的功能特性&#xff0c;贏得了全球眾多開發者的青睞。下面&#xff0c;我們將從Laravel的特點、應用案例以及具體的框架使用等方面進行詳細解析。 一、Laravel框…

甲子光年專訪天潤融通CEO吳強:客戶經營如何穿越低速周期?

作者&#xff5c;陳楊、編輯&#xff5c;栗子 社會的發展從來都是從交流和聯絡開始的。 從結繩記事到飛馬傳信&#xff0c;從電話電報到互聯網&#xff0c;人類的聯絡方式一直都在隨著時代的發展不斷進步。只是傳統社會通信受限于技術導致效率低下&#xff0c;對經濟社會產生影…

LLaMA:挑戰大模型Scaling Law的性能突破

實際問題 在大模型的研發中,通常會有下面一些需求: 計劃訓練一個10B的模型,想知道至少需要多大的數據?收集到了1T的數據,想知道能訓練一個多大的模型?老板準備1個月后開發布會,給的資源是100張A100,應該用多少數據訓多大的模型效果最好?老板對現在10B的模型不滿意,想…

退市新規解讀—財務類強制退市

一、退市風險警示&#xff1a;第一年觸及相關指標 上市公司最近一個會計年度觸及下列退市風險指標之一&#xff0c;公司股票或存托憑證被實施退市風險警示(*ST)&#xff1a; 第1項 組合類財務指標 僅發行A股或B股&#xff0c;最近一個會計年度或追溯重述后最近一個會計年度 …

Leetcode 102.目標和

給定一個正整數數組 nums 和一個整數 target 。 向數組中的每個整數前添加 ‘’ 或 ‘-’ &#xff0c;然后串聯起所有整數&#xff0c;可以構造一個 表達式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2 之前添加 ‘’ &#xff0c;在 1 之前添加 ‘-’ &…

C#面:C#屬性能在接口中聲明嗎?

在C#中&#xff0c;接口是一種定義了一組方法、屬性和事件的類型。在接口中&#xff0c;只能聲明方法、屬性和事件的簽名&#xff0c;而不能包含字段、構造函數或實現代碼。因此&#xff0c;C#屬性不能直接在接口中聲明。 然而&#xff0c;你可以在接口中定義屬性的簽名&#…

VMware的具體使用

&#x1f4d1;打牌 &#xff1a; da pai ge的個人主頁 &#x1f324;?個人專欄 &#xff1a; da pai ge的博客專欄 ??寶劍鋒從磨礪出&#xff0c;梅花香自苦寒來 目錄 一&#x1f324;?VMware的安…

用戶登錄錯誤次數太多鎖定賬號

當用戶登錄驗證碼錯誤次數太多時&#xff0c;需要限制用戶在10分鐘之內不能再次登錄。 限制方案&#xff1a; 1.通過Redis ZSet key可以設置為用戶名&#xff0c;value可以設置為UUID&#xff0c;score設置為當前時間戳 每次用戶登錄時&#xff0c;通過 rangeByScore 查詢對…

Ubuntu22安裝PyCharm

下載&#xff08;社區版&#xff09; 官網下載地址 解壓 sudo tar -xzvf pycharm-community-2024.1.4.tar.gz 軟件移動到指定目錄下&#xff08;根據不同版本修改&#xff09; sudo mv pycharm-community-2024.1.4/ /usr/local/PyCharm/運行 cd /usr/local/PyCharm/pycha…

使用PEFT庫進行ChatGLM3-6B模型的LORA高效微調

PEFT庫進行ChatGLM3-6B模型LORA高效微調 LORA微調ChatGLM3-6B模型安裝相關庫使用ChatGLM3-6B模型GPU顯存占用準備數據集加載模型加載數據集數據處理數據集處理配置LoRA配置訓練超參數開始訓練保存LoRA模型模型推理從新加載合并模型使用微調后的模型 LORA微調ChatGLM3-6B模型 本…

6 序列數據和文本的深度學習

6.1 使用文本數據 文本是常用的序列化數據類型之一。文本數據可以看作是一個字符序列或詞的序列。對大多數問題&#xff0c;我們都將文本看作詞序列。深度學習序列模型(如RNN及其變體)能夠從文本數據中學習重要的模式。這些模式可以解決類似以下領域中的問題&#xff1a; 自然…

JVM專題十一:JVM 中的收集器一

上一篇JVM專題十&#xff1a;JVM中的垃圾回收機制專題中&#xff0c;我們主要介紹了Java的垃圾機制&#xff0c;包括垃圾回收基本概念&#xff0c;重點介紹了垃圾回收機制中自動內存管理與垃圾收集算法。如果說收集算法是內存回收的方法論&#xff0c;那么垃圾收集器就是內存回…

【開發者推薦】告別繁瑣:一鍵解鎖國產ETL新貴,Kettle的終結者

在數字化轉型的今天&#xff0c;數據集成的重要性不言而喻。ETL工具作為數據管理的核心&#xff0c;對企業決策和運營至關重要。盡管Kettle廣受歡迎&#xff0c;但國產ETL工具 TASKCTL 以其創新特性和卓越性能&#xff0c;為市場提供了新的選擇。 TASKCTL概述 TASKCTL 是一款免…

wget之Win11中安裝及使用

wget之Win11中安裝及使用 文章目錄 wget之Win11中安裝及使用1. 下載2. 安裝3. 配置環境變量4. 查看及使用1. 查看版本2. 幫助命令3. 基本使用 1. 下載 下載地址&#xff1a;https://eternallybored.org/misc/wget 選擇對應的版本進行下載即可 2. 安裝 將下載后的wget-1.21.4-w…

中醫實訓室:在傳統針灸教學中的應用與創新

中醫實訓室是中醫教育體系中的重要組成部分&#xff0c;尤其在傳統針灸教學中&#xff0c;它扮演著無可替代的角色。這里是理論與實踐的交匯點&#xff0c;是傳統技藝與現代教育理念的碰撞之地。本文將探討中醫實訓室在傳統針灸教學中的應用與創新實踐。 首先&#xff0c;實訓室…

ResultSet的作用和類型

ResultSet的作用&#xff1a; ResultSet在Java中主要用于處理和操作數據庫查詢結果。它是一個接口&#xff0c;提供了一系列方法來訪問和操作數據庫查詢得到的結果集。具體來說&#xff0c;ResultSet的作用包括&#xff1a; 獲取查詢結果&#xff1a;通過ResultSet可以獲取數…

C++中指針的使用方法

基本概念 指針&#xff1a;一個變量&#xff0c;它存儲另一個變量的內存地址。地址運算符 &&#xff1a;用于獲取變量的內存地址。間接運算符 *&#xff1a;用于訪問指針所指向的變量的值。 聲明和初始化 int a 10; // 定義一個整數變量 int *p &a; // 定…

算法導論 總結索引 | 第四部分 第十六章:貪心算法

1、求解最優化問題的算法 通常需要經過一系列的步驟&#xff0c;在每個步驟都面臨多種選擇。對于許多最優化問題&#xff0c;使用動態規劃算法求最優解有些殺雞用牛刀了&#xff0c;可以使用更簡單、更高效的算法 貪心算法&#xff08;greedy algorithm&#xff09;就是這樣的算…

Git 學習筆記(超詳細注釋,從0到1)

Git學習筆記 1.1 關鍵詞 Fork、pull requests、pull、fetch、push、diff、merge、commit、add、checkout 1.2 原理&#xff08;看圖學習&#xff09; 1.3 Fork別人倉庫到自己倉庫中 記住2個地址 1&#xff09;上游地址&#xff08;upstream地址&#xff09;&#xff1a;http…

Nuxt 應用的三種運行模式(五)

Nuxt.js 提供了三種運行模式&#xff0c;分別是&#xff1a; SPA&#xff08;單頁面應用&#xff09; Universal&#xff08;服務端渲染&#xff09; Static&#xff08;靜態生成&#xff09; 每種模式都適用于不同的場景和需求&#xff0c;下面將詳細解析這三種模式的區別&…