首頁(yè) - 網(wǎng)校 - 萬(wàn)題庫(kù) - 直播 - 雄鷹網(wǎng)校 - 團(tuán)購(gòu) - 書(shū)城 - ? - 學(xué)習(xí)通 - 導(dǎo)航 -
首頁(yè)網(wǎng)校萬(wàn)題庫(kù)直播雄鷹網(wǎng)校團(tuán)購(gòu)書(shū)城模考論壇實(shí)用文檔作文大全寶寶起名
2015中考
法律碩士
2015高考
MBA考試
2015考研
MPA考試
在職研
中科院
考研培訓(xùn)
專升本
自學(xué)考試 成人高考
四 六 級(jí)
GRE考試
攻碩英語(yǔ)
零起點(diǎn)日語(yǔ)
職稱英語(yǔ)
口譯筆譯
申碩英語(yǔ)
零起點(diǎn)韓語(yǔ)
商務(wù)英語(yǔ)
日語(yǔ)等級(jí)
GMAT考試
公共英語(yǔ)
職稱日語(yǔ)
新概念英語(yǔ)
專四專八
博思考試
零起點(diǎn)英語(yǔ)
托?荚
托業(yè)考試
零起點(diǎn)法語(yǔ)
雅思考試
成人英語(yǔ)三級(jí)
零起點(diǎn)德語(yǔ)
等級(jí)考試
華為認(rèn)證
水平考試
Java認(rèn)證
職稱計(jì)算機(jī) 微軟認(rèn)證 思科認(rèn)證 Oracle認(rèn)證 Linux認(rèn)證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報(bào) 關(guān) 員
外 銷 員
價(jià)格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報(bào)檢員
法律顧問(wèn)
管理咨詢
企業(yè)培訓(xùn)
社會(huì)工作者
銀行從業(yè)
教師資格
營(yíng)養(yǎng)師
保險(xiǎn)從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書(shū)資格
電子商務(wù)
期貨考試
國(guó)際商務(wù)
心理咨詢
營(yíng) 銷 師
司法考試
國(guó)際貨運(yùn)代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格
基金從業(yè)資格
統(tǒng)計(jì)從業(yè)資格
經(jīng)濟(jì)師
精算師
統(tǒng)計(jì)師
會(huì)計(jì)職稱
法律顧問(wèn)
ACCA考試
初級(jí)會(huì)計(jì)職稱
資產(chǎn)評(píng)估師
高級(jí)經(jīng)濟(jì)師
注冊(cè)會(huì)計(jì)師
高級(jí)會(huì)計(jì)師
美國(guó)注冊(cè)會(huì)計(jì)師
審計(jì)師考試
國(guó)際內(nèi)審師
注冊(cè)稅務(wù)師
理財(cái)規(guī)劃師
一級(jí)建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價(jià)師
二級(jí)建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價(jià)工程師
注冊(cè)測(cè)繪師
質(zhì)量工程師
巖土工程師
注冊(cè)給排水
造價(jià)員考試
注冊(cè)計(jì)量師
環(huán)保工程師
化工工程師
暖通工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
消防工程師
監(jiān)理工程師
房地產(chǎn)估價(jià)
土地估價(jià)師
安全評(píng)價(jià)師
房地產(chǎn)經(jīng)紀(jì)人
投資項(xiàng)目管理師
環(huán)境影響評(píng)價(jià)師
土地登記代理人
寶寶起名
繽紛校園
實(shí)用文檔
入黨申請(qǐng)
英語(yǔ)學(xué)習(xí)
思想?yún)R報(bào)
作文大全
工作總結(jié)
求職招聘 論文下載 直播課堂
您現(xiàn)在的位置: 考試吧 > 軟件水平考試 > 復(fù)習(xí)資料 > 程序員 > 正文

2015年軟件水平考試程序員精選題(4)

考試吧整理“2015年軟件水平考試程序員精選題(4)”供考生參考,更多軟件水平考試資訊和備考資料請(qǐng)關(guān)注考試吧軟件水平考試網(wǎng)。

  從上往下遍歷二元樹(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ù)容器中,F(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)推薦:

  2015年軟考信息技術(shù)處理員考前知識(shí)點(diǎn)總結(jié)匯總

  2015年軟件水平考試《程序員》提高練習(xí)題匯總

  2015軟件水平考試《程序員》知識(shí)點(diǎn)總結(jié)匯總

文章搜索
軟件水平考試欄目導(dǎo)航
版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
Copyright © 2004- 考試吧軟件水平考試網(wǎng) All Rights Reserved 
中國(guó)科學(xué)院研究生院權(quán)威支持(北京)
在線模擬試題
考證通關(guān)殺器
考試最新資訊
學(xué)
一次通關(guān)技巧