【LeetCode102.二叉樹的層序遍歷】vs.【LeetCode103.二叉樹的鋸齒形層序遍歷】

題目鏈接

  • LeetCode102.二叉樹的層序遍歷:102. 二叉樹的層序遍歷 - 力扣(LeetCode)
  • LeetCode103.二叉樹的鋸齒形層序遍歷:103. 二叉樹的鋸齒形層序遍歷 - 力扣(LeetCode)

實現思路

  1. 定義一個隊列,每一輪循環,隊列都會放入新的一層的節點;
  2. 在下一次循環中,取出上一層放入的所有新節點(放入數組中),并依次從隊列中踢出這些節點,獲取到這些節點的左右孩子,再放入隊列中。如此,就達到了1中所說的每一輪循環,最終隊列放入的都是新遍歷的層次的所有節點(從左到右)。
  3. 鋸齒形:用一個遍歷來標記奇/偶數層,奇數層時數組順序存放在結果中,反之,逆序。

代碼實現

  • LeetCode102.二叉樹的層序遍歷
class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> ans;if (root == nullptr) return ans;queue<TreeNode*> q;q.push(root);while (int s = q.size()) {vector<int> res;for (int i = 0; i < s; i++) {TreeNode* top = q.front();res.push_back(top->val);q.pop();if (top->left) q.push(top->left);if (top->right) q.push(top->right);}ans.push_back(res);}return ans;}
};
  • LeetCode103.二叉樹的鋸齒形層序遍歷
class Solution {
public:vector<vector<int>> zigzagLevelOrder(TreeNode* root) {vector<vector<int>> res;if (root == nullptr) return res;queue<TreeNode*> q;q.push(root);bool flag = 0;while (int s = q.size()) {vector<int> ans;TreeNode* cur;for (int i = 0; i < s; i++) {cur = q.front();ans.push_back(cur->val);if (cur->left) q.push(cur->left);if (cur->right) q.push(cur->right);q.pop();}if (flag) reverse(ans.begin(), ans.end());res.push_back(ans);flag = !flag;}return res;}
};

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

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

相關文章

Redis On-CPU Profiling定位瓶頸到可視化火焰圖

1 . 前置檢查&#xff1a;確認 CPU 真的是瓶頸 在正式打性能“補丁”前&#xff0c;務必跑一遍系統級健康核對表&#xff08;推薦 Brendan Greg 的 USE Method&#xff09;&#xff1a;資源關注指標常用工具CPUUtil/Idle、RunQueuetop、vmstat、sar內存Fault、Swap、Cache Miss…

未來趨勢:AI與量子計算對服務器安全的影響

隨著技術的飛速發展&#xff0c;人工智能&#xff08;AI&#xff09;和量子計算正在深刻改變信息技術的各個領域。特別是在服務器安全領域&#xff0c;這兩項技術既帶來了新的可能性&#xff0c;也帶來了前所未有的挑戰。本文將探討AI和量子計算技術對服務器安全的影響&#xf…

markdown學習筆記(個人向) Part.1

markdown學習筆記&#xff08;個人向&#xff09; Part.1 1. 推薦插件 markdown&#xff1a; 安裝支持markdown的插件&#xff1b; markdown-preview-github-styles&#xff1a; 可以將VS Code上默認的markdown預覽樣式修改成github上常用的形式&#xff0c;很大程度上提高文件…

ZooKeeper 實現分布式鎖

1. 分布式鎖概述 在分布式系統中&#xff0c;為了保證共享資源在并發訪問下的數據一致性&#xff0c;需要引入分布式鎖。分布式鎖是一種在分布式環境下控制多個進程對共享資源進行互斥訪問的機制。它與單機環境下的鎖&#xff08;如Java中的synchronized或Lock&#xff09;不同…

Linux線程——基礎全解

一、什么是線程&#xff08;Thread&#xff09;&#xff1f;? 定義&#xff1a;線程是程序執行的最小單位。即線程&#xff08;Thread&#xff09;是操作系統能夠進行運算調度的最小單位&#xff0c;它被包含在進程之中&#xff0c;是進程中的實際運作單位。一個進程可以并發多…

Java基礎--封裝+static

目錄 什么是封裝&#xff1f; 什么是訪問限定符&#xff1f; static靜態修飾符 用static修飾的類變量或類方法的注意事項&#xff1a; 什么是封裝&#xff1f; 封裝是面向對象的三大特性之一&#xff0c;指的是將一個類中的實現細節進行隱藏&#xff0c;對外只提供一些開放…

DAY 51 復習日

作業&#xff1a;day43的時候我們安排大家對自己找的數據集用簡單cnn訓練&#xff0c;現在可以嘗試下借助這幾天的知識來實現精度的進一步提高import torch import torch.nn as nn import torch.nn.functional as F import torchvision import torchvision.transforms as trans…

針對網絡爬蟲的相關法律法規整理

在中國&#xff0c;網絡爬蟲的法律法規涉及多個層面&#xff0c;包括個人信息保護、數據安全、網絡安全、知識產權、反不正當競爭等。以下是詳細的法律法規分析及合規指南&#xff1a; 1. 核心法律法規及適用場景? ??&#xff08;1&#xff09;《民法典》——隱私權與個人信…

1.1_5_2 計算機網絡的性能指標(下)

繼續來看計算機網絡的性能指標&#xff0c;接下來我們探討時延&#xff0c;時延帶寬積和往返時延&#xff0c;以及信道利用率這幾個性能指標。 首先來看時延這個性能指標&#xff0c;英文叫delay&#xff0c;也有的教材&#xff0c;把它翻譯為延遲。所謂的時延&#xff0c;就是…

PP-OCRv2:超輕OCR系統的萬能包

PP-OCRv2&#xff1a;超輕OCR系統的萬能包摘要光學字符識別&#xff08;OCR&#xff09;系統已廣泛應用于多種場景&#xff0c;但設計兼顧精度與效率的OCR系統仍具挑戰性。我們此前提出的超輕量OCR系統PP-OCR在平衡兩者方面取得進展。本文進一步提出PP-OCRv2&#xff0c;通過五…

常見的軟件版本開源協議

開源軟件許可證核心指南 一、許可證基礎分類 1. 寬松型許可證&#xff08;Permissive&#xff09; 核心特征&#xff1a;允許閉源衍生&#xff0c;僅保留版權聲明適用場景&#xff1a;商業集成、快速開發代表協議&#xff1a; &#x1f4dc; MIT &#x1f4dc; Apache 2.0 &…

基于FPGA的一維序列三次樣條插值算法verilog實現,包含testbench

目錄 1.前言 2.算法運行效果圖預覽 3.算法運行軟件版本 4.部分核心程序 5.算法仿真參數 6.算法理論概述 7.參考文獻 8.算法完整程序工程 1.前言 三次樣條插值是一種在數據擬合和信號處理中廣泛應用的技術&#xff0c;它通過構造分段三次多項式來逼近給定的離散數據點&a…

RAG 之 Prompt 動態選擇的三種方式

“如果我有5個prompt模板&#xff0c;我想只選擇一個每次都自動五選一能做到嗎怎么做&#xff1f;” 完全可以做到。這在復雜的RAG或Agentic工作流中是一個非常普遍且關鍵的需求&#xff0c;通常被稱為“條件路由&#xff08;Conditional Routing&#xff09;”或“動態調度&am…

【ROS2 自動駕駛學習】02-安裝ROS2及其配套工具

目錄 一、設置語言環境 二、添加存儲庫 三、添加軟件源 四、安裝ROS2 五、配置環境 六、測試ROS2 七、安裝一些工具 7.1 terminator 7.2 colcon工具 7.3 tf工具 7.4 joint-state-publisher工具 7.5 urdf 八、安裝三方庫 8.1 Eigen 8.2 yaml-cpp 8.3 matplotl…

系統學習Python——并發模型和異步編程:基礎知識

分類目錄&#xff1a;《系統學習Python》總目錄 并行是并發的一種特殊情況。**所有并行系統都是并發的&#xff0c;但不是所有并發系統都是并行的。**在21世紀初&#xff0c;我們可以使用單核設備在GNU Linux上同時處理100個進程。一臺擁有4個CPU核的現代筆記本計算機&#xff…

睿爾曼系列機器人——以創新驅動未來,重塑智能協作新生態(下)

在智能制造與人工智能深度融合的當下&#xff0c;機器人技術正經歷從 “功能替代” 到 “價值共創” 的深刻躍遷。睿爾曼&#xff0c;作為全球超輕量仿人機械臂領域的先行者&#xff0c;始終秉持 “讓機器人觸手可及” 的使命&#xff0c;憑借底層技術的突破性進展&#xff0c;…

表征工程(Representation Engineering, RepE)

表征工程(Representation Engineering, RepE) 近年來,表征工程(Representation Engineering, RepE)在提升AI系統透明度和可控性方面取得了顯著進展。 一、大模型可解釋性與可控性的突破 核心論文:《Representation Engineering: A Top-Down Approach to AI Transparen…

國產ARM+FPGA工業開發平臺——GM-3568JHF

一、引言 隨著物聯網和國產替代需求的快速發展&#xff0c;嵌入式系統面臨計算性能與硬件靈活性的雙重挑戰。GM-3568JHF開發板基于國產“ARMFPGA”異構架構&#xff0c;結合瑞芯微RK3568J處理器與紫光同創Logos-2 FPGA芯片&#xff0c;支持國產自主操作系統&#xff0c;滿足通…

RISCV Linux 虛擬內存精講系列一 Sv39

筆者認為&#xff0c;Linux 操作系統&#xff08;Operating System&#xff09;最核心的機制是虛擬內存&#xff08;Virtual Memory&#xff09;。因為&#xff0c;操作系統主要作用是將硬件環境抽象起來&#xff0c;給在其中運行的應用&#xff08;Applications&#xff09;提…

【apply from: “$flutterRoot/packages/flutter_tools/gradle/flutter.gradle“作用】

這行代碼的作用是將 Flutter 的 Gradle 構建腳本集成到 Android 項目中&#xff0c;具體細節如下&#xff1a;作用解析&#xff1a;引入 Flutter 構建邏輯 flutter.gradle 是 Flutter SDK 的核心構建腳本&#xff0c;它負責&#xff1a; 編譯 Dart 代碼為原生二進制文件&#x…