青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

每天早晨叫醒你的不是鬧鐘,而是夢想

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  62 Posts :: 0 Stories :: 5 Comments :: 0 Trackbacks

常用鏈接

留言簿(1)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

題目:二叉樹的結點定義如下:

struct TreeNode

{

        int m_nValue;

        TreeNode* m_pLeft;

        TreeNode* m_pRight;

};

輸入兩棵二叉樹AB,判斷樹B是不是A的子結構。

例如,下圖中的兩棵樹AB,由于A中有一部分子樹的結構和B是一樣的,因此B就是A的子結構。

                 1                                                   8
               /    \                                               /    \
              8    7                                             9    2
            /    \
           9    2
                /  \
               4  7

分析:這是2010年微軟校園招聘時的一道題目。二叉樹一直是微軟面試題中經常出現的數據結構。對微軟有興趣的讀者一定要重點關注二叉樹。

                回到這個題目的本身。要查找樹A中是否存在和樹B結構一樣的子樹,我們可以分為兩步:第一步在樹A中找到和B的根結點的值一樣的結點N,第二步再判斷樹A中以N為根結點的子樹是不是包括和樹B一樣的結構。

                第一步在樹A中查找與根結點的值一樣的結點。這實際上就是樹的遍歷。對二叉樹這種數據結構熟悉的讀者自然知道我們可以用遞歸的方法去遍歷,也可以用循環的方法去遍歷。由于遞歸的代碼實現比較簡潔,面試時如果沒有特別要求,我們通常都會采用遞歸的方式。下面是參考代碼:

bool HasSubtree(TreeNode* pTreeHead1, TreeNode* pTreeHead2)

{

        if((pTreeHead1 == NULL && pTreeHead2 != NULL) ||

                (pTreeHead1 != NULL && pTreeHead2 == NULL))

                return false;

 

        if(pTreeHead1 == NULL && pTreeHead2 == NULL)

                return true;

 

        return HasSubtreeCore(pTreeHead1, pTreeHead2);

}

bool HasSubtreeCore(TreeNode* pTreeHead1, TreeNode* pTreeHead2)

{

        bool result = false;

        if(pTreeHead1->m_nValue == pTreeHead2->m_nValue)

        {

                result = DoesTree1HaveAllNodesOfTree2(pTreeHead1, pTreeHead2);

        }

 

        if(!result && pTreeHead1->m_pLeft != NULL)

                result = HasSubtreeCore(pTreeHead1->m_pLeft, pTreeHead2);

 

        if(!result && pTreeHead1->m_pRight != NULL)

                result = HasSubtreeCore(pTreeHead1->m_pRight, pTreeHead2);

 

        return result;

}

在上述代碼中,我們遞歸調用hasSubtreeCore遍歷二叉樹A。如果發現某一結點的值和樹B的頭結點的值相同,則調用DoesTree1HaveAllNodeOfTree2,做第二步判斷。

在面試的時候,我們一定要注意邊界條件的檢查,即檢查空指針。當樹A或樹B為空的時候,定義相應的輸出。如果沒有檢查并做相應的處理,程序非常容易崩潰,這是面試時非常忌諱的事情。由于沒有必要在每一次遞歸中做邊界檢查(每一次遞歸都做檢查,增加了不必要的時間開銷),上述代碼只在HasSubtree中作了邊界檢查后,在HasSubtreeCore中作遞歸遍歷。

接下來考慮第二步,判斷以樹A中以N為根結點的子樹是不是和樹B具有相同的結構。同樣,我們也可以用遞歸的思路來考慮:如果結點N的值和樹B的根結點不相同,則以N為根結點的子樹和樹B肯定不具有相同的結點;如果他們的值相同,則遞歸地判斷他們的各自的左右結點的值是不是相同。遞歸的終止條件是我們到達了樹A或者樹B的葉結點。參考代碼如下:

bool DoesTree1HaveAllNodesOfTree2(TreeNode* pTreeHead1, TreeNode* pTreeHead2)

{

        if(pTreeHead2 == NULL)

                return true;

 

        if(pTreeHead1 == NULL)

                return false;

 

        if(pTreeHead1->m_nValue != pTreeHead2->m_nValue)

                return false;

 

        return DoesTree1HaveAllNodesOfTree2(pTreeHead1->m_pLeft, pTreeHead2->m_pLeft) &&

                DoesTree1HaveAllNodesOfTree2(pTreeHead1->m_pRight, pTreeHead2->m_pRight);

}

 

  博主何海濤對本博客文章享有版權。網絡轉載請注明出處http://zhedahht.blog.163.com/

posted on 2011-04-29 14:03 沛沛 閱讀(394) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構/算法
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品三级| 欧美自拍丝袜亚洲| 亚洲午夜羞羞片| 亚洲欧美国产三级| 欧美激情精品久久久久| 亚洲精品男同| 在线视频日韩| 欧美日本在线一区| 宅男精品视频| 久久国产精品色婷婷| 在线日韩一区二区| 久久久久www| 亚洲精品偷拍| 国产乱码精品一区二区三| 欧美在线啊v| 夜夜嗨av一区二区三区中文字幕| 欧美主播一区二区三区| 亚洲国产精品一区二区www在线 | 国语自产精品视频在线看8查询8| 午夜精品视频在线观看| 欧美国产日韩a欧美在线观看| 亚洲人成小说网站色在线| 国产精品网站在线播放| 免费看成人av| 亚洲欧美日韩国产综合精品二区| 欧美高清视频在线| 亚洲欧美日韩天堂| 99re6热在线精品视频播放速度| 国产精品亚洲人在线观看| 欧美韩日精品| 久久乐国产精品| 亚洲一区二区三区高清不卡| 久久久精品动漫| 亚洲无吗在线| 亚洲精品久久7777| 在线看无码的免费网站| 国内精品美女在线观看| 国产日本欧美一区二区三区在线 | 香港久久久电影| 亚洲精品乱码久久久久久久久| 国产一区成人| 国产精品视频不卡| 欧美日韩精品在线观看| 另类激情亚洲| 久久精品日产第一区二区三区| 亚洲电影视频在线| 久久久国产亚洲精品| 亚洲欧美区自拍先锋| 中文国产成人精品| 亚洲视频免费观看| 亚洲视频在线观看视频| 99视频国产精品免费观看| 日韩一级网站| 一区二区三区三区在线| 亚洲精品综合久久中文字幕| 亚洲精品综合精品自拍| 一区二区三区蜜桃网| 亚洲午夜日本在线观看| 亚洲综合色自拍一区| 欧美午夜大胆人体| 欧美日韩亚洲一区二区| 欧美激情一区二区三区蜜桃视频| 欧美国产第二页| 欧美高清视频在线观看| 欧美女同在线视频| 国产精品av免费在线观看 | 久久久久看片| 美女任你摸久久| 欧美日韩国产综合视频在线观看| 欧美日韩国产一区二区| 欧美日韩另类综合| 国产精品乱人伦一区二区| 国产精品视频最多的网站| 国模一区二区三区| 亚洲激情专区| 亚洲一区二区四区| 久久久久九九九| 亚洲国产日韩欧美一区二区三区| 99国产精品99久久久久久| 亚洲欧美精品| 免费欧美日韩| 国产精品久久福利| 激情久久中文字幕| 一区二区三区欧美激情| 一区二区日韩免费看| 欧美一区二区性| 欧美激情亚洲另类| 亚洲神马久久| 欧美不卡激情三级在线观看| 国产精品区二区三区日本| 亚洲国产日韩欧美在线动漫| 亚洲一区国产视频| 免费在线日韩av| 亚洲影院污污.| 欧美日韩国产美| 韩国成人精品a∨在线观看| 亚洲乱码国产乱码精品精| 欧美伊人影院| 亚洲精品社区| 免费看成人av| 亚洲第一色在线| 亚洲影院色无极综合| 欧美成人精品一区二区三区| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 红桃av永久久久| 1000部国产精品成人观看| 99re国产精品| 久久国产高清| 快射av在线播放一区| 欧美日韩亚洲天堂| 亚洲国产一区二区三区高清| 久久www成人_看片免费不卡| 亚洲免费黄色| 欧美国产精品久久| 黄色成人在线| 久久只有精品| 久久av一区二区三区| 国产精品视频久久| 亚洲精品日日夜夜| 亚洲电影在线观看| 欧美在线视频网站| 国产精品久久久久毛片软件| av不卡在线| 一区二区av在线| 欧美日韩系列| 亚洲午夜久久久久久久久电影院 | 午夜欧美精品| 欧美日韩一区综合| 一本色道久久综合亚洲精品高清 | 亚洲自拍偷拍一区| 亚洲国产精品国自产拍av秋霞| 免费不卡亚洲欧美| 亚洲国产精品久久人人爱蜜臀| 久久精品国产一区二区三区| 午夜精品福利在线| 国产一区二区三区免费在线观看 | 亚洲网址在线| 亚洲性感美女99在线| 国产精品久久久久久久久久直播| 亚洲尤物视频网| 亚洲在线观看免费视频| 欧美日韩成人综合在线一区二区| av成人动漫| 亚洲女人天堂成人av在线| 国产午夜精品理论片a级大结局 | 免费毛片一区二区三区久久久| 亚洲精品久久7777| 一本一道久久综合狠狠老精东影业 | 欧美日韩久久不卡| 先锋影音久久久| 久久国产日韩欧美| 亚洲欧洲精品一区| 日韩视频永久免费| 欧美婷婷久久| 欧美一区二区三区免费视| 欧美日本一区二区视频在线观看| 一本久久a久久免费精品不卡| 一本色道久久88综合亚洲精品ⅰ | 欧美另类极品videosbest最新版本| 亚洲伦理在线免费看| 亚洲无线视频| 黑人操亚洲美女惩罚| 亚洲伦理精品| 国产一区二区电影在线观看| 亚洲啪啪91| 黄网动漫久久久| 最近中文字幕mv在线一区二区三区四区| 欧美日韩国产综合视频在线观看| 久久精品国产69国产精品亚洲| 欧美.日韩.国产.一区.二区| 亚洲一级高清| 久久九九免费| 亚洲无限av看| 欧美xx视频| 久久久久久一区二区| 欧美体内she精视频在线观看| 老牛影视一区二区三区| 欧美日韩亚洲高清| 亚洲高清在线播放| 国产一区二区观看| 夜夜嗨一区二区| 亚洲国产精品久久| 久久精品女人| 先锋影音久久久| 欧美三级视频| 亚洲高清视频一区二区| 国产综合网站| 欧美一区在线看| 欧美在线观看你懂的| 欧美午夜精品一区| 亚洲国产视频一区二区| 在线播放国产一区中文字幕剧情欧美 | 国产精品毛片a∨一区二区三区|国| 久久久久国产精品一区三寸| 欧美视频亚洲视频| 亚洲日本欧美日韩高观看| 亚洲国产精品视频一区| 免费久久精品视频| 噜噜噜91成人网| 国内精品久久久久久久97牛牛|