久久久国产精品秘人口麻豆|永久免费AV无语国产|人成电影免费中文字幕|久久AV嫩草影院2

    1. <dfn id="yitbn"><samp id="yitbn"><progress id="yitbn"></progress></samp></dfn>

          <div id="yitbn"></div>

          1. 首頁 - 網(wǎng)校 - 萬題庫 - 美好明天 - 直播 - 導航
            您現(xiàn)在的位置: 考試吧 > 軟件水平考試 > 模擬試題 > 程序員 > 正文

            計算機軟件水平考試《程序員》面試題精選題(4)

            來源:考試吧 2017-10-18 11:58:07 要考試,上考試吧! 萬題庫
            “計算機軟件水平考試《程序員》面試題精選題(4)”供考生參考。更多軟件水平考試內(nèi)容請訪問考試吧軟件水平考試網(wǎng)。

              -從上往下遍歷二元樹

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

              例如輸入

              8

              / \

              6 10

              /\ /\

              5 7 9 11

              輸出8 6 10 5 7 9 11。

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

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

              既然已經(jīng)確定數(shù)據(jù)容器是一個隊列,現(xiàn)在的問題變成怎么實現(xiàn)隊列了。實際上我們無需自己動手實現(xiàn)一個,因為STL已經(jīng)為我們實現(xiàn)了一個很好的deque(兩端都可以進出的隊列),我們只需要拿過來用就可以了。

              我們知道樹是圖的一種特殊退化形式。同時如果對圖的深度優(yōu)先遍歷和廣度優(yōu)先遍歷有比較深刻的理解,將不難看出這種遍歷方式實際上是一種廣度優(yōu)先遍歷。因此這道題的本質(zhì)是在二元樹上實現(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);

              }

              }

              相關推薦:

              2017年計算機軟件水平考試時間公布(全年)

              各地2017年軟件水平考試準考證打印/領取時間匯總

              考試吧特別策劃:2017年計算機軟考報考指南專題熱點文章

              軟考各科目模擬試題及答案各科目復習指導匯總

              軟考報考條件軟考報名方法考試大綱科目

              歷年軟考真題及答案匯總軟件水平考試簡介

            文章搜索
            ·精選試題 ·智能練習
            ·智能評估 ·視頻解析
            掃描二維碼下載
            • 初級職稱
            • 中級職稱
            • 高級職稱

            版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@eeeigo.com,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。
            Copyright © 2004- 考試吧軟件水平考試網(wǎng) 出版物經(jīng)營許可證新出發(fā)京批字第直170033號 
            京ICP證060677 京ICP備05005269號 中國科學院研究生院權(quán)威支持(北京)
            在線模擬試題
            考證通關殺器
            考試最新資訊
            一次通關技巧