給定乙個二叉樹,返回它的 前序 遍歷。
示例:輸入: [1,null,2,3]12
/3輸出: [1,2,3]
前序遍歷: 根節點 --》左子樹 --》右子樹
思路:1
2 31 3 5 6
6 77 9 0
棧stack:先進後出
堆heap:先進先出
**
1、本質:stack是乙個容器;實現了棧的先進後出的特點。
2、標頭檔案: #include
3、定義方式: stack <
int> s1;
stack s2;
4、基本操作: (1)入棧 : s.
push
(x);
(2)出棧 : s.
pop();
(3)棧頂 : s.
top();
(4)判空 : s.
empty()
; (5)元素個數:s.
size()
;
1、本質:在c++中;cector標識乙個容器。
2、作用:能夠像容器一樣存放各種型別的物件;簡單來說,vector是乙個能夠存放任意型別的動態陣列,能夠增加和壓縮資料
3、注意事項:
(1)標識的向量長度較長(需要為向量內儲存很多數);容易導致記憶體洩漏,而且效率低
(2)vector作為函式的引數或者返回值;注意他的寫法
double
distance
(vector<
int>
&a, vector<
int>
&b)其中&不可以缺少
4、標頭檔案: #include
5、建立:
6、用法:
(1)尾部插入 : vec.
push_back
(a);
(2)下標訪問 : vec[
0];vec[0]
[0] (3)
(4)插入元素 : vec.
insert
(vec.
begin()
+i,a)
;//在第 i+1 個元素之前插入 a
(5)刪除元素 : vec.
erase
(vec.
begin()
+2);
//刪除第三個元素
vec.
erase
(vec.
begin()
+i,vec.
begin()
+j);刪除區間[i,j-1]
(6)向量大小 : vec.
size()
; (7)清空向量 : vec.
clear()
;7、vector型別:int、double、string、struct;注意如果為struct型別;必須定義為全域性、否則報錯。
思路:res記錄 遍歷節點的值 ;stk是乙個棧;壓入、壓出
定義乙個節點;先將棧頂壓入(res記錄資料)--》遍歷壓入左子樹(res記錄資料)--》如果左子樹為空,stack的top方法,返回棧頂,元素出棧--
-》遍歷壓入右子樹(res記錄資料) --
-》結束。
res就是最後的結果
class
solution
cur = stk.
top();
//回到棧頂
stk.
pop();
//出棧
cur = cur-
>right;
//右子樹
}return res;}}
;
leetcode 面試題專題
面試題51.陣列中的逆序對 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。利用歸併排序,將陣列分成兩部分,前面一部分和後面一部分,進行歸併的時候,需要比較兩個陣列的數值大小,如果第二個陣列的值小的話,代表前乙個陣列剩下的都...
位元組面試題 leetcode
給定乙個迴圈陣列 最後乙個元素的下乙個元素是陣列的第乙個元素 輸出每個元素的下乙個更大元素。數字 x 的下乙個更大的元素是按陣列遍歷順序,這個數字之後的第乙個比它更大的數,這意味著你應該迴圈地搜尋它的下乙個更大的數。如果不存在,則輸出 1。示例 1 輸入 1,2,1 輸出 2,1,2 解釋 第乙個 ...
面試題 main方法之前幹了什麼
先上一段 package draft public class test public int j print j public test string str public static int print string str public static void main string arg...