程式設計之旅 Day39

2021-09-19 18:00:49 字數 3104 閱讀 4183

day39-學習內容:

1.劍指offer

面試題32:從上到下列印二叉樹

面試題32:把二叉樹列印成多行

面試題32:按之字形順序列印二叉樹

面試題36:二叉搜尋樹與雙向鍊錶

3.華為機試題

例1:取近似值

例2:合併表記錄

例3:提取不重複的整數

題目描述:從上往下列印出二叉樹的每個節點,同層節點從左至右列印。

思路:層次遍歷使用佇列

**:

class solution 

queueq;

q.push(root);

while(q.size()!=0)

if(pnode->right!=nullptr)

}return res;

}};

題目描述:從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。

**:

class solution 

queueq;

q.push(proot);

while(!q.empty())

if(pnode->right!=nullptr)

q.pop();

}res.push_back(temp);

}

return res;

}};

class solution 

queueq;

q.push(proot);

int tobeprint=1;

int nextlevel=0;

while(q.size())

if(pnode->right!=nullptr)

q.pop();

tobeprint--;

if(tobeprint==0)

}return res;

}};

解析:

1.vector::clear()函式的作用是清空容器中的內容,但如果是指標物件的話,並不能清空其內容,必須要像以下方法一樣才能達到清空指標物件的內容,將會清空temp中的所有元素,包括temp開闢的空間(size),但是capacity會保留,即不可以以temp[1]這種形式賦初值,只能通過temp.push_back(value)的形式賦初值。

vectorxx;

for(int it=0;it!=xx.size();++it)

xx.clear()

但並不**記憶體,但你可以通過swap()函式來巧妙的達到**記憶體的效果:

xx.clear();

xx.swap(vector());

2、vector::erase()用於清空容器中的內容以及釋放記憶體,並返回指向刪除元素的下乙個元素的迭代器。

題目描述:

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。

思路:使用兩個棧

**:

class solution 

stacks[2];

int current=0;

int next=1;

s[current].push(proot);

while(!s[current].empty()||!s[next].empty())

if(pnode->right)

}else

if(pnode->left)}}

current=1-current;

next=1-next;

res.push_back(temp);

}return res;

}};

題目描述:輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。

思路:中序遍歷+遞迴

**:

class solution 

return pheadoflist;

}void convertcore(treenode* prootoftree,treenode*& plastnodeoflist)

treenode* pcurrent=prootoftree;

if(pcurrent->left!=nullptr)

pcurrent->left=plastnodeoflist;

if(plastnodeoflist!=nullptr)

plastnodeoflist=pcurrent;

if(pcurrent->right!=nullptr)

}};

題目描述:

寫出乙個程式,接受乙個正浮點數值,輸出該數值的近似整數值。如果小數點後數值大於等於5,向上取整;小於5,則向下取整。 

輸入描述:

輸入乙個正浮點數值
輸出描述:

輸出該數值的近似整數值

示例1輸入

5.5輸出

6
**:

#include using namespace std;

int main()

else

}for(map::iterator iter=m.begin();iter!=m.end();iter++);

int num=0;

while(n)

n=n/10;

}cout《解析:在set中每個元素的值都唯一,而且系統能根據元素的值自動進行排序。

day 3 9基礎複習

1.不要在模組之間相互呼叫,否則會出現麻繩現象,避免迴圈匯入。用來判斷值是否相等 分別指向兩個空間,但是空間裡面的內容相同 is 判斷指向是否相等。例 a 11,22,33 b 11,22,33 a b true a is b false id a 1398041200093640 id b 139...

day39 程序 佇列

佇列queue 程序之間資料是隔離的,不共享的,但是通過multiprocessing的queue可以實現程序之間的通訊。1 先進先出 把1 2 3放到佇列裡,按1 2 3的順序拿出來。from multiprocessing import queue q queue q.put 1 q.put 2...

Day39 貪心 區間取點

傳送門 區間取點 給定n個區間,若讓每個區間至少包含乙個點,則需要至少幾個點?分析只需要按區間右端點排序 然後遍歷所有區間 逐個判斷上乙個點是否被包含在這個區間裡 若不在則加乙個點,再更新點位置 若在則跳過即可 我們初始化定為有乙個點在第乙個區間,並且點在其右端點 include includeus...