LeetCode面試題之前序遍歷

2021-10-09 07:49:12 字數 1877 閱讀 1375

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

示例:輸入: [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...