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...