1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        動畫:面試算法之求二叉樹的下一節(jié)點

        共 860字,需瀏覽 2分鐘

         ·

        2020-01-16 23:22


        06ae2cd6b38d8660ba67c78904563bb6.webp

        黑客技術(shù)點擊右側(cè)關(guān)注,了解黑客的世界!

        ca5de117c8438c9464db40ffc89da504.webp

        Java開發(fā)進階點擊右側(cè)關(guān)注,掌握進階之路!

        c6daecd166d2362509406d9855485cab.webp

        Python開發(fā)點擊右側(cè)關(guān)注,探討技術(shù)話題!


        作者 |? 小鹿

        來源 |? 小鹿動畫學(xué)編程(Web_Coding)


        題目

        764734e9589ac2aeb8df35077b67529e.webp

        給定一棵二叉樹和其中的一個的節(jié)點,如何找出中序遍歷的下一節(jié)點。樹中的節(jié)點除了有兩個分別指向左、右子樹的指針,還有一個指向父節(jié)點的指針。


        如:中序遍歷序列為 {d,b,h,e,i,a,f,c,g}。a97e21d6d424d429ec27223bd018fa32.webp


        問題分析

        764734e9589ac2aeb8df35077b67529e.webp


        我們根據(jù)題目進行分析,要想求出其中一個樹節(jié)點中序遍歷的下一節(jié)點是什么,我們需要對每個單獨的情況分別進行分析。


        根據(jù)中序遍歷的規(guī)律(先遍歷左子節(jié)點,然后遍歷根節(jié)點,最后遍歷右子節(jié)點),下一節(jié)點可能存在的情況如下。


        動畫實現(xiàn)

        764734e9589ac2aeb8df35077b67529e.webp


        情況一:如果查找的節(jié)點有右子樹,則下一結(jié)點在它右子樹的最左子節(jié)點。如下圖中的 b 節(jié)點的下一節(jié)點為 h 節(jié)點


        85685f03883529a75af3c3312ca61acc.webp


        如果右子樹沒有左子節(jié)點,則下一節(jié)點為右子節(jié)點。如下圖中的 c 節(jié)點的下一節(jié)點為 g 節(jié)點


        d52a4ee65797f3871007eb4b112af880.webp


        情況二:如果當(dāng)前節(jié)點沒有右子樹且是父節(jié)點的左子節(jié)點,則它的下一節(jié)點是它的父節(jié)點。如下圖中的 d 節(jié)點的下一節(jié)點為 b 節(jié)點。


        fb11b771cd931233f56cdee631d6048f.webp


        情況三:如果當(dāng)前的節(jié)點沒有右子樹且是父節(jié)點的右子節(jié)點。對于這種情況,我們就一直向它的父節(jié)點遍歷,直到找到第一個是父節(jié)點的左子節(jié)點的節(jié)點。如果該節(jié)點的父節(jié)點存在,則父節(jié)點就是要查找的下一節(jié)點。如下圖中的 i 的下一節(jié)點為 a。


        2fc8736bc5c512529903e8d7d75196cb.webp


        再比如沒有找到這樣的節(jié)點,下節(jié)點為空。如圖中的 g 節(jié)點的下一結(jié)點為空。


        代碼實現(xiàn)

        764734e9589ac2aeb8df35077b67529e.webp


        JavaScript68b63d9d2fa688368a8b77a85723d340.webpJavaa6c47e95985cea6d6494ea59598e44c5.webpPython6b8e8d7ac6aa01a5cb09e89a2ec8b819.webp


        測試用例

        764734e9589ac2aeb8df35077b67529e.webp


        • 普通測試 —— 完全二叉樹、非完全二叉樹
        • 特殊測試 —— 只要左子節(jié)點的二叉樹、只有右子節(jié)點的二叉樹、只有一個結(jié)點
        • 輸入測試 —— 空節(jié)點


        ?推薦↓↓↓?

        關(guān)

        ?16個技術(shù)公眾號】都在這里!


        涵蓋:程序員大咖、源碼共讀、程序員共讀、數(shù)據(jù)結(jié)構(gòu)與算法、黑客技術(shù)和網(wǎng)絡(luò)安全、大數(shù)據(jù)科技、編程前端、Java、Python、Web編程開發(fā)、Android、iOS開發(fā)、Linux、數(shù)據(jù)庫研發(fā)、幽默程序員等。

        c54dd2a1864e015b960b13ac691af684.webp萬水千山總是情,點個 “在看” 行不行
        瀏覽 64
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            91精品少妇一区二区三区蜜桃臀 | 国产精品熟女高潮无套 | 堕落人妻玛丽莲 | 天天干人人干 | 婷婷爱五月天 | 女人荫蒂让男人添舒服 | 国产草草影院ccyycom | 女人脱了内裤让男生桶爽免费网站 | 免费操片 | 美女被狂揉下部 |