欧美精品在欧美一区二区少妇,久久久久成人影视,99热在线精品呀,草莓视频手机在线观看

當(dāng)前位置:

計(jì)算機(jī)軟考程序員面試題精選題4

發(fā)表時(shí)間:2015/4/23 10:18:51 來(lái)源:互聯(lián)網(wǎng) 點(diǎn)擊關(guān)注微信:關(guān)注中大網(wǎng)校微信
關(guān)注公眾號(hào)

-從上往下遍歷二元樹(shù)

題目:輸入一顆二元樹(shù),從上往下按層打印樹(shù)的每個(gè)結(jié)點(diǎn),同一層中按照從左往右的順序打印。

例如輸入

8

/ \

6 10

/\ /\

5 7 9 11

輸出8 6 10 5 7 9 11。

分析:這曾是微軟的一道面試題。這道題實(shí)質(zhì)上是要求遍歷一棵二元樹(shù),只不過(guò)不是我們熟悉的前序、中序或者后序遍歷。

我們從樹(shù)的根結(jié)點(diǎn)開(kāi)始分析。自然先應(yīng)該打印根結(jié)點(diǎn)8,同時(shí)為了下次能夠打印8的兩個(gè)子結(jié)點(diǎn),我們應(yīng)該在遍歷到8時(shí)把子結(jié)點(diǎn)6和10保存到一個(gè)數(shù)據(jù)容器中。現(xiàn)在數(shù)據(jù)容器中就有兩個(gè)元素6 和10了。按照從左往右的要求,我們先取出6訪問(wèn)。打印6的同時(shí)要把6的兩個(gè)子結(jié)點(diǎn)5和7放入數(shù)據(jù)容器中,此時(shí)數(shù)據(jù)容器中有三個(gè)元素10、5和7。接下來(lái)我們應(yīng)該從數(shù)據(jù)容器中取出結(jié)點(diǎn)10訪問(wèn)了。注意10比5和7先放入容器,此時(shí)又比5和7先取出,就是我們通常說(shuō)的先入先出。因此不難看出這個(gè)數(shù)據(jù)容器的類型應(yīng)該是個(gè)隊(duì)列。

既然已經(jīng)確定數(shù)據(jù)容器是一個(gè)隊(duì)列,現(xiàn)在的問(wèn)題變成怎么實(shí)現(xiàn)隊(duì)列了。實(shí)際上我們無(wú)需自己動(dòng)手實(shí)現(xiàn)一個(gè),因?yàn)镾TL已經(jīng)為我們實(shí)現(xiàn)了一個(gè)很好的deque(兩端都可以進(jìn)出的隊(duì)列),我們只需要拿過(guò)來(lái)用就可以了。

我們知道樹(shù)是圖的一種特殊退化形式。同時(shí)如果對(duì)圖的深度優(yōu)先遍歷和廣度優(yōu)先遍歷有比較深刻的理解,將不難看出這種遍歷方式實(shí)際上是一種廣度優(yōu)先遍歷。因此這道題的本質(zhì)是在二元樹(shù)上實(shí)現(xiàn)廣度優(yōu)先遍歷。

參考代碼:

#include

#include

using namespace std;

struct BTreeNode // a node in the binary tree

{

int m_nValue; // value of node

BTreeNode *m_pLeft; // left child of node

BTreeNode *m_pRight; // right child of node

};

///////////////////////////////////////////////////////////////////////

// Print a binary tree from top level to bottom level

// Input: pTreeRoot - the root of binary tree

///////////////////////////////////////////////////////////////////////

void PrintFromTopToBottom(BTreeNode *pTreeRoot)

{

if(!pTreeRoot)

return;

// get a empty queue

deque dequeTreeNode;

// insert the root at the tail of queue

dequeTreeNode.push_back(pTreeRoot);

while(dequeTreeNode.size())

{

// get a node from the head of queue

BTreeNode *pNode = dequeTreeNode.front();

dequeTreeNode.pop_front();

// print the node

cout << pnode-="">m_nValue << ' ';

// print its left child sub-tree if it has

if(pNode->m_pLeft)

dequeTreeNode.push_back(pNode->m_pLeft);

// print its right child sub-tree if it has

if(pNode->m_pRight)

dequeTreeNode.push_back(pNode->m_pRight);

}

}

相關(guān)推薦:

計(jì)算機(jī)軟件水平考試輔導(dǎo)資料

計(jì)算機(jī)軟件水平考試精品輔導(dǎo)班

(責(zé)任編輯:)

2頁(yè),當(dāng)前第1頁(yè)  第一頁(yè)  前一頁(yè)  下一頁(yè)
最近更新 考試動(dòng)態(tài) 更多>
a级特黄一区| 综合图区亚洲欧美另类图片| 熟妇一区二| 伊人网在线视频观看| 毛片视频免费人成观看| 国产欧美激情一区二区| 一区偷窥自拍视频| 免费亚洲色图大全| 日本久久久久久久| 日本乱一区| 一道精品亚洲一区二区| 亚洲第一极品精品无码| 日韩中个人字幕在浅| 中文字幕国产精品| 国产视频自拍网站| 黄色无码蜜臀av| 偷拍四虎丁香射精| 午夜理论无码| 日韩精品a∨在线观看| 国产情品久久久| 久久亚洲中文字幕无码| 欧洲亚洲欧洲特级片| 五月天欧美| 久久99精品网久久| 欧美一级性爱| 久久久亚洲精品熟女| 美女国产在线一区| 亚洲国产日韩精品无码| 国产AV最新网站| 国产亚洲视频免费播放| 日韩自慰第一页| 小早川在线一区二区三区| 亚洲三级网| 在线99热| 国产精品最新无码av| 少妇久久久久久被弄高潮| 国产18分钟小姐| 国产成人午夜福利在线观看视频| 欧美一区,三区| 超碰人人爱人人干| 欧美大胸在线|