leetcode144 二叉樹的前序遍歷

給定一個二叉樹,返回它的?前序?遍歷。

?示例:

輸入: [1,null,2,3] ?
? ?1
? ? \
? ? ?2
? ? /
? ?3?

輸出: [1,2,3]
進階:?遞歸算法很簡單,你可以通過迭代算法完成嗎?

思路:模仿遞歸的思路壓棧即可。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<Integer>();if (root == null) {return res;}Stack<TreeNode> stack = new Stack<TreeNode>();stack.push(root);while (!stack.isEmpty()) {TreeNode node = stack.pop();res.add(Integer.valueOf(node.val));if (node.right != null) {stack.push(node.right);}if (node.left != null) {stack.push(node.left);}}return res;}
}

?

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

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

相關文章

AJAX大總結

1、AJAX概述 1.1 什么是AJAX AJAX&#xff08;Asynchronous Javascript And XML&#xff09;翻譯成中文就是“異步Javascript和XML”。即使用Javascript語言與服務器進行異步交互&#xff0c;傳輸的數據為XML&#xff08;當然&#xff0c;傳輸的數據不只是XML&#xff09;。 …

我對STL的一些看法(一)初步認識STL

后面一段時間我將會給大家分享我自己學到STL以及應用的時候遇到的問題還有他的一些精髓,可能開始的邏輯會有些亂吧,不過后面還會不斷的整理和優化,讓自己看明白也讓更多的讀者看的清楚。 最近剛閑下來,先說說什么是STL: 不知道你是否有過這樣的經歷。在大學,你準備著手完…

PaperNotes(12)-Autoregressive Quantile networks for generative modeling

Autoregressive Quantile networks for generative modeling3 autoregressive implicit quantiles3 autoregressive implicit quantiles autoregressive&#xff1a;自身做回歸變量&#xff0c;用之前若干時刻的隨機變量 來建模 之后某些時刻 隨機變量的模型。 N維隨機變量的…

我對STL的一些看法(二)認識vector容器

先說vector吧。 C++ Vector(向量容器) 是一個線性順序結構。相當于數組,但其大小可以不預先指定,并且自動擴展。它可以像數組一樣被操作,由于它的特性我們完全可以將vector 看作動態數組。 vector 的數據安排以及操作方式,與 array 非常像似。兩者的唯一差別在于空間的…

git大總結

git init 在本地新建一個repo,進入一個項目目錄,執行git init,會初始化一個repo,并在當前文件夾下創建一個.git文件夾. git clone 獲取一個url對應的遠程Git repo, 創建一個local copy. 一般的格式是git clone [url]. clone下來的repo會以url最后一個斜線后面的名稱命名,創…

我對STL的一些看法(三)認識list容器

C++ List(雙向鏈表) 是一個線性鏈表結構,它的數據由若干個節點構成,每一個節點都包括一個信息塊(即實際存儲的數據)、一個前驅指針和一個后驅指針。它無需分配指定的內存大小且可以任意伸縮,這是因為它存儲在非連續的內存空間中,并且由指針將有序的元素鏈接起來。由于…

C++(4)--初識變量、數據類型

C變量1.C 命名規則2.C 命名規范3.C 數據類型sizeof ()4.聲明和使用變量4.1使用整型變量4.2使用單精度浮點型變量4.3使用雙精度浮點型變量5.附送-cout 設置寬度&#xff0c;對齊方式6.算術運算符和表達式6.1除法、取余6.2自加、自減7.強制類型轉換《老九學堂C課程》《C primer》…

我對STL的一些看法(四)認識deque容器

Deque(雙向隊列) 是一種優化了的、對序列兩端元素進行添加和刪除操作的基本序列容器。它允許較為快速地隨機訪問,但它不像vector 把所有的對象保存在一塊連續的內存塊,而是采用多個連續的存儲塊,并且在一個映射結構中保存對這些塊及其順序的跟蹤。向deque 兩端添加或刪除元…

我對STL的一些看法(五)初識關聯容器

3關聯容器 pair類型 這個是一個簡單的標準庫類型,該類型在utility頭文件中定義,我們來看看他主要的操作: pair<T1 ,T2> p1; 創建一個空的pair對象 pair<T1,T2> p1(v1,v2);創建一個pair對象,他的兩個元素分別為T1類型的v1,T2類型的v2 make_pair(v1,v2…

關系數據庫——mysql數據類型大總結

整數類型&#xff1a; 實數類型&#xff1a; 定點數&#xff1a;DECIMAL和NUMERIC類型在MySQL中視為相同的類型。它們用于保存必須為確切精度的值。 DECIMAL(M,D)&#xff0c;其中M表示十進制數字總的個數&#xff0c;D表示小數點后面數字的位數。 如果存儲時&#xff0c;整…

學點數學(5)--線性規劃對偶形式的理解

線性規劃對偶問題的理解1.弱對偶2.強對偶曾在上課的時候多次遇到這個求一個問題的對偶形式&#xff0c;大多是硬套公式。記一次&#xff0c;忘一次。后來在蘇大佬的博客中看到了相關闡述&#xff0c;感覺豁然開朗&#xff0c;&#xff08;可以記得就一些了&#xff09;遂做筆記…

關系數據庫——視圖/存儲過程/觸發器

視圖 視圖是虛擬的表&#xff0c;與包含數據的表不同&#xff0c;視圖只包含使用時動態檢索數據的查詢,主要是用于查詢。 為什么使用視圖 重用sql語句簡化復雜的sql操作&#xff0c;在編寫查詢后&#xff0c;可以方便地重用它而不必知道他的基本查詢細節。使用表的組成部分而…

C++(5)--運算符、表達式、條件結構(if, switch)

C運算符、表達式 條件結構1.表達式與運算符1.1賦值運算符1.2算術運算符1.3關系運算符1.4邏輯運算符1.5位運算符1.6 sizeof()1.7 三目運算符1.8 運算符的優先級2.條件結構2.1--if2.2 --switch結構2.3 switch 和 多重if 結構的對比條件結構)《老九學堂C課程》《C primer》學習筆記…

關系數據庫——mysql常用函數總結

文本處理函數 Left(x,len) – 返回串左邊的字符&#xff08;長度為len&#xff09; Right(x,len) Length(x) – 返回串的長度 Locate(x,sub_x) – 找出串的一個子串 SubString(x, from, to) – 返回字串的字符 Lower(x) Upper(x) LTrim(x) RTrim(x) Soundex(x) – 讀…

setsockopt()用法(參數詳細說明)

先來看看函數的原型: int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen); 然后我們來看看參數: s(套接字): 指向一個打開的套接口描述字 level:(級別): 指定選項代碼的類型。

再議libcurl編程

那是2年前用libcurl了,我肯定好久不用的知識,放置久了就會遺忘,現在我又重拾起這個知識點,重頭再來,至于前面的基礎知識,可以參考我的 http://blog.csdn.net/pbymw8iwm/article/details/6675754 假設你要獲取URL所表示的遠程主機上的資源。你需要寫一段程序用來完…

關系數據庫——并發控制

并發控制 多用戶數據庫&#xff1a;允許多個用戶同時使用的數據庫&#xff08;訂票系統&#xff09; 不同的多事務執行方式&#xff1a; 1.串行執行&#xff1a;每個時刻只有一個事務運行&#xff0c;其他事務必須等到這個事務結束后方能運行。 2.交叉并發方式&#xff1a; …

C++(6)--初識循環while,do-while

初識循環1.使用while 循環結構2.使用do-while 循環3.python中的while循環《老九學堂C課程》《C primer》學習筆記。《老九學堂C課程》詳情請到B站搜索《老九零基礎學編程C入門》-------------簡單的事情重復做&#xff0c;重復的事情用心做&#xff0c;用心的事情堅持做(老九君…

map類的erase方法的在Linux與Windows中的差異

這次的代碼是跨平臺的,尼瑪在win32上通過,但是在linux上不通過了,查找了一下原來是平臺linux不支持。 有人舉了例子: std::map< int , float > i_f_map; i_f_map[1] = 1.2f; i_f_map[23] = 1.4f;

C++(7)--for循環,break,continue語句

for循環1.for循環2.break 語句3.continue語句4.while,do-while,for 循環的異同5.for循環demo 嵌套循環-打印圖形6.python 中的for循環《老九學堂C課程》《C primer》學習筆記。《老九學堂C課程》詳情請到B站搜索《老九零基礎學編程C入門》-------------簡單的事情重復做&#x…