【LeetCode】144. 二叉樹的前序遍歷

144. 二叉樹的前序遍歷

難度:簡單

題目

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

示例 1:

輸入:root = [1,null,2,3]
輸出:[1,2,3]

示例 2:

輸入:root = []
輸出:[]

示例 3:

輸入:root = [1]
輸出:[1]

示例 4:

輸入:root = [1,2]
輸出:[1,2]

示例 5:

輸入:root = [1,null,2]
輸出:[1,2]

提示:

  • 樹中節點數目在范圍 [0, 100]
  • -100 <= Node.val <= 100

**進階:**遞歸算法很簡單,你可以通過迭代算法完成嗎?

個人題解

方法一:遞歸

遞歸,最簡單的前中后序遍歷方式

/*** 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 List<Integer> preorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<>();process(result, root);return result;}private void process(List<Integer> result, TreeNode node) {if (node == null) {return;}result.add(node.val);process(result, node.left);process(result, node.right);}
}

方法二:迭代

/*** 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 List<Integer> preorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<>();if (root == null) {return result;}Deque<TreeNode> stack = new LinkedList<>();stack.push(root);while (!stack.isEmpty()) {TreeNode cur = stack.pop();result.add(cur.val);if (cur.right != null) {stack.push(cur.right);}if (cur.left != null) {stack.push(cur.left);}}return result;}
}

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

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

相關文章

ARM裸機-18(SD卡啟動)

1、主流的外存設備介紹 內存和外存的區別&#xff1a;一般是把這種RAM(random access memory&#xff0c;隨機訪問存儲器&#xff0c;特點是任意字節讀寫&#xff0c;掉電丟失)叫內存&#xff0c;把ROM (read only memory&#xff0c;只讀存儲器&#xff0c;類似于Flash、SD卡之…

如何解決安卓手機無法預覽pdf文件而是需要直接下載的問題

在開發中常常會遇到需要在一個應用里打開一份pdf文件并預覽&#xff0c;經真機調試時發現在蘋果手機上打開pdf文件能正常預覽&#xff0c;但在安卓手機打開時卻會需要我們下載才能預覽&#xff0c;無法直接預覽 為了解決這個問題&#xff0c;我們采用安裝pdfH5插件的方式&…

計算機三級嵌入式知識總結(一)

一、ARM的七種異常類型 1、復位異常RESET “復位異常RESET”通常是指在電子設備或系統中發生了一個意外的復位或重啟。這可能是由于硬件故障、軟件問題或其他未知的原因引起的。當設備經歷復位異常時&#xff0c;它可能會丟失正在進行的操作或設置&#xff0c;導致數據丟失或系…

LINUXZ

10.6.2 AT24C02 訪問方法 設備地址 從芯片手冊上可以知道&#xff0c;AT24C02 的設備地址跟它的 A2、A1、A0 引腳有關&#xff1a; 圖 10.36 AT24C02 設備地址引腳配置 294 / 577 打開 I2C 模塊的原理圖&#xff1a; 開發板配套網盤資料\04_開發板原理圖\ 04_Extend_modules\通…

SQL語句執行過程

一條 SQL 的執行過程可以大致分為以下幾個步驟&#xff1a; 連接器&#xff1a; ○ 客戶端與數據庫建立連接&#xff0c;并發送 SQL 語句給數據庫服務。 ○ 連接器驗證客戶端的身份和權限&#xff0c;確保用戶有足夠的權限執行該 SQL 語句。查詢緩存&#xff1a; ○ 連接器首先…

基于鷹棲息算法優化概率神經網絡PNN的分類預測 - 附代碼

基于鷹棲息算法優化概率神經網絡PNN的分類預測 - 附代碼 文章目錄 基于鷹棲息算法優化概率神經網絡PNN的分類預測 - 附代碼1.PNN網絡概述2.變壓器故障診街系統相關背景2.1 模型建立 3.基于鷹棲息優化的PNN網絡5.測試結果6.參考文獻7.Matlab代碼 摘要&#xff1a;針對PNN神經網絡…

Motion v5.6.7 蘋果電腦上的視頻編輯

Motion mac是一款運行在蘋果電腦上的視頻編輯軟件&#xff0c;它能讓您自定Final Cut Pro字幕、轉場和效果。 它可以在2D或3D空間中創建您自己的精美炫目的動畫&#xff0c;同時還能在您工作時提供實時反饋。廣色域支持讓你的動態圖形更顯出色光彩。3D文字功能經過優化增強&am…

01背包與完全背包學習總結

背包問題分類見下圖 參考學習點擊&#xff1a;代碼隨想錄01背包講解 01背包問題&#xff1a; 核心思路&#xff1a; 1、先遍歷物品個數&#xff0c;再遍歷背包容量。因為容量最先是最大的&#xff0c;往背包里放物品&#xff0c;所以背包容量在慢慢減少&#xff0c;但背包容量…

CentOS7 firewall使用(開放和禁止端口、端口轉發)

安裝 安裝命令 yum install firewalld -y 使用命令 systemctl start firewalld ##開啟防火墻systemctl stop firewalld ##關閉防火墻systemctl status firewalld ##查看防火墻狀態firewall-cmd --reload ##重啟防火墻systemctl enable firewalld ##設置開啟啟動systemctl …

共享內存原理介紹及簡單使用

每當我們執行一個程序時&#xff0c;對于操作系統來講就創建了一個進程,在這個過程中&#xff0c;伴隨著資源的分配和釋放。可以認為進程是一個程序的一次執行過程。進程的內存空間是相互獨立的&#xff0c;一般而言是不能相互訪問的。但很多情況下進程間需要互相通信&#xff…

上海泗博MODBUS轉PROFINET網關TS-180 網關連接LED顯示屏應用案例

項目 常州某鋼鐵公司的軋鋼車間為了更清晰地顯示當天軋鋼系統各環節的工作參數&#xff0c;如軋鋼的日期、鋼種、吐絲機設備運行情況等&#xff0c;引進了另一家為其定制的LED顯示屏。軋鋼系統各環節的設備參數通過西門子S7-1500PLC采集后&#xff0c;實時顯示在LED顯示屏上&am…

飛瓜數據B站丨B站UP主11月第3周榜單排行榜榜單(B站平臺)發布!

飛瓜輕數發布2023年11月13日-11月19日飛瓜數據UP主排行榜&#xff08;B站平臺&#xff09;&#xff0c;通過充電數、漲粉數、成長指數、帶貨數據等維度來體現UP主賬號成長的情況&#xff0c;為用戶提供B站號綜合價值的數據參考&#xff0c;根據UP主成長情況用戶能夠快速找到運營…

Linux網絡——傳輸層

目錄 一.再談端口概念 二.UDP協議 1.UDP協議格式 2.UDP的特點 3.面向數據報 4.UDP的緩沖區 5.UDP使用注意事項 6.UDP協議在內核中的表現形式 7.基于UDP的應用層協議 三.TCP協議 1.TCP協議格式 2.TCP確認應答機制 3.超時重傳機制 4.TCP報文六位標志位 5.滑動窗口 6…

制作抖音查券返利機器人的簡易步驟

制作抖音查券返利機器人的簡易步驟 隨著社交電商的快速發展&#xff0c;越來越多的消費者開始通過優惠券和返利來省錢購物。而抖音作為一款廣受歡迎的短視頻平臺&#xff0c;也為消費者提供了一個全新的購物體驗。本文將結合微賺淘客系統&#xff0c;介紹如何制作一個簡易的抖…

Web3與Web3.0: Web3指的是去中心化和基于區塊鏈的網絡,Web3.0指的是鏈接或語義網絡。

目錄 Web3與Web3.0: Web3指的是去中心化和基于區塊鏈的網絡 Web3.0指的是鏈接或語義網絡。

Flutter開發實踐:用一套代碼構建多端精美應用

&#x1f3c6;作者簡介&#xff0c;黑夜開發者&#xff0c;CSDN領軍人物&#xff0c;全棧領域優質創作者?&#xff0c;CSDN博客專家&#xff0c;阿里云社區專家博主&#xff0c;2023年6月CSDN上海賽道top4。 &#x1f3c6;數年電商行業從業經驗&#xff0c;歷任核心研發工程師…

Python下使用requests庫遇到的問題及解決方案

每一盞燈都有一個故事……當凌晨2點我的房間燈還亮著時&#xff0c;那就是我與BUG的一場生死博弈。一個人靜靜地坐在電腦前不斷地寫代碼&#xff0c;感覺快要麻木了&#xff0c;好比閉關修煉一樣枯燥無味。最終當我打通任督二脈后&#xff0c;bug修復迎來的一片曙光。 一、問題…

clang+llvm多進程gdb調試

clangllvm多進程gdb調試 前言1. 命令行gdb2. 父進程調試3. 子進程調試4. 返回父進程 前言 在學習新增llvm的優化pass時&#xff0c;需要跟蹤clang及llvm的調用棧。然而llvm通過posix_spawn()創建了新進程&#xff0c;這使得gdb調試必須有一定的技巧了。 1. 命令行gdb 以下命…

函數式編程-Stream流筆記-三更草堂

函數式編程-Stream流 1. 概述 1.1 為什么學&#xff1f; 能夠看懂公司里的代碼 大數量下處理集合效率高 代碼可讀性高 消滅嵌套地獄 //查詢未成年作家的評分在70以上的書籍 由于數據中作家和書籍可能出現重復&#xff0c;需要進行去重 List<Book> bookList new Ar…

4G5G智能執法記錄儀在保險公司車輛保險遠程定損中的應用

4G智能執法記錄儀&#xff1a;汽車保險定損的**利器 隨著科技的不斷進步&#xff0c;越來越多的智能設備應用到日常生活中。而在車輛保險定損領域&#xff0c;4G智能執法記錄儀的出現無疑是一大**。它不僅可以實現遠程定損&#xff0c;還能實現可視化操作、打印保單以及數據融…