成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

用JS實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)----排序二叉樹(shù)

ispring / 1966人閱讀

摘要:代碼實(shí)現(xiàn)創(chuàng)建一個(gè)排序二叉樹(shù)節(jié)點(diǎn)類根節(jié)點(diǎn)插入節(jié)點(diǎn)以上便是創(chuàng)建排序二叉樹(shù)的實(shí)現(xiàn)方式重點(diǎn)在于插入節(jié)點(diǎn)的具體實(shí)現(xiàn),即注釋的代碼片段。

排序二叉樹(shù)

如上圖為典型的排序二叉樹(shù),左孩子的值比節(jié)點(diǎn)的值小,右孩子的值比節(jié)點(diǎn)的值大,關(guān)于具體的樹(shù)的定義及二叉樹(shù)的定義可以百度或查閱相關(guān)資料。

排序二叉樹(shù)的創(chuàng)建

創(chuàng)建原理
排序二叉樹(shù)的創(chuàng)建原理與排序二叉樹(shù)的定義一致,即左孩子的值比當(dāng)前節(jié)點(diǎn)的值小,右孩子的值比當(dāng)前節(jié)點(diǎn)的值大。

代碼實(shí)現(xiàn)




    
    
    binary-tree
    


    
    


以上便是創(chuàng)建排序二叉樹(shù)的實(shí)現(xiàn)方式:
重點(diǎn)在于插入節(jié)點(diǎn)的具體實(shí)現(xiàn),即注釋1的代碼片段。
其中比較難理解的點(diǎn)在于遞歸是如何執(zhí)行,
取當(dāng)前的節(jié)點(diǎn)為{key: 1, left:null, right:null},則當(dāng)前樹(shù)如下圖:

對(duì)該樹(shù)進(jìn)行插入

           var insertNode = function(node, newNode) {
                if(node !== null) {
                    if(newNode.key < node.key) {
                        insertNode(node.left, newNode)
                        if(node.left == null) {
                            node.left = newNode
                        }
                    }else{
                        insertNode(node.right, newNode)
                        if(node.right == null) {
                            node.right = newNode
                        }
                    }
                }

                return null
            }

首先由根節(jié)點(diǎn)8出發(fā),進(jìn)入node的key為8的棧內(nèi)1比根節(jié)點(diǎn)8要小,進(jìn)入遞歸,即進(jìn)入到了node的key為3的棧內(nèi),如下所示:

        3
   -----------------
        8
  --------------------------

當(dāng)前的值比3小再進(jìn)入3的左孩子null的棧內(nèi)

    
        null
    ------------
        3
   -----------------
        8
  --------------------------
    

由于null的棧內(nèi),node為null,立即退出當(dāng)前棧,返回至node的key為3的棧,發(fā)現(xiàn)左孩子為null,則將key為1的node變成key為3的node的左孩子,同時(shí)退出3的棧,返回至8的棧,8的棧左孩子不null,不做任何操作,知道當(dāng)前方法執(zhí)行完畢,跳出8的棧,返回至方法所在的執(zhí)行環(huán)境的棧,節(jié)點(diǎn)插入完畢,再進(jìn)行下一個(gè)節(jié)點(diǎn)的插入,操作則同上。以上的解釋,如果配合上瀏覽器的斷點(diǎn)調(diào)試,食用更佳,更好理解程序的整個(gè)執(zhí)行過(guò)程。

當(dāng)所有節(jié)點(diǎn)插入完畢之后,該排序二叉樹(shù)也創(chuàng)建完畢。

二叉樹(shù)創(chuàng)建完畢之后則可對(duì)二叉樹(shù)進(jìn)行相關(guān)的操作(遍歷,查找,節(jié)點(diǎn)刪除等)【待續(xù)】

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96893.html

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)以及相關(guān)排序

    摘要:桶排序與計(jì)數(shù)排序的區(qū)別桶排序中一個(gè)桶可以放一個(gè)范圍內(nèi)的多個(gè)數(shù)據(jù),在各個(gè)桶中又可以用其他方法排序,其快速之處在于只用對(duì)比同一個(gè)桶內(nèi)的數(shù)字而無(wú)需與其他桶的數(shù)字作對(duì)比。與計(jì)數(shù)排序相比,桶排序需要作二次對(duì)比,但可省略桶的個(gè)數(shù)。 哈希表(Hash Table) 所有符合鍵值對(duì)即key-value的結(jié)構(gòu)就是哈希。數(shù)組其實(shí)也是一種哈希。 計(jì)數(shù)排序(復(fù)雜度(n+max))無(wú)法統(tǒng)計(jì)負(fù)數(shù)和小數(shù),需要一個(gè)...

    Brenner 評(píng)論0 收藏0
  • 使javascript實(shí)現(xiàn)排序叉樹(shù)(1)

    摘要:使用實(shí)現(xiàn)排序二叉樹(shù)排序二叉樹(shù)的定義二叉樹(shù)的基礎(chǔ)上,左節(jié)點(diǎn)比父節(jié)點(diǎn)要小,右節(jié)點(diǎn)比父節(jié)點(diǎn)要大的二叉樹(shù),叫排序二叉樹(shù)。下期內(nèi)容實(shí)現(xiàn)排序二叉樹(shù)的中序前序后續(xù)遍歷實(shí)現(xiàn)二叉樹(shù)的節(jié)點(diǎn)查找功能實(shí)現(xiàn)排序二叉樹(shù)的刪除節(jié)點(diǎn)功能應(yīng)用排序二叉樹(shù)實(shí)現(xiàn)一個(gè)小游戲 使用javascript實(shí)現(xiàn)排序二叉樹(shù)(1) 排序二叉樹(shù)的定義: 二叉樹(shù)的基礎(chǔ)上,左節(jié)點(diǎn)比父節(jié)點(diǎn)要小,右節(jié)點(diǎn)比父節(jié)點(diǎn)要大的二叉樹(shù),叫排序二叉樹(shù)。 show...

    Caicloud 評(píng)論0 收藏0
  • js數(shù)據(jù)結(jié)構(gòu)-叉樹(shù)二叉堆)

    摘要:二叉樹(shù)二叉樹(shù)是一種樹(shù)形結(jié)構(gòu),它的特點(diǎn)是每個(gè)節(jié)點(diǎn)最多只有兩個(gè)分支節(jié)點(diǎn),一棵二叉樹(shù)通常由根節(jié)點(diǎn),分支節(jié)點(diǎn),葉子節(jié)點(diǎn)組成。 二叉樹(shù) 二叉樹(shù)(Binary Tree)是一種樹(shù)形結(jié)構(gòu),它的特點(diǎn)是每個(gè)節(jié)點(diǎn)最多只有兩個(gè)分支節(jié)點(diǎn),一棵二叉樹(shù)通常由根節(jié)點(diǎn),分支節(jié)點(diǎn),葉子節(jié)點(diǎn)組成。而每個(gè)分支節(jié)點(diǎn)也常常被稱作為一棵子樹(shù)。 showImg(https://segmentfault.com/img/bVbmEd...

    ningwang 評(píng)論0 收藏0
  • js數(shù)據(jù)結(jié)構(gòu)-叉樹(shù)二叉搜索樹(shù))

    摘要:前言可能有一部分人沒(méi)有讀過(guò)我上一篇寫的二叉堆,所以這里把二叉樹(shù)的基本概念復(fù)制過(guò)來(lái)了,如果讀過(guò)的人可以忽略前面針對(duì)二叉樹(shù)基本概念的介紹,另外如果對(duì)鏈表數(shù)據(jù)結(jié)構(gòu)不清楚的最好先看一下本人之前寫的數(shù)據(jù)結(jié)構(gòu)鏈表二叉樹(shù)二叉樹(shù)是一種樹(shù)形結(jié)構(gòu),它的特點(diǎn)是 前言 可能有一部分人沒(méi)有讀過(guò)我上一篇寫的二叉堆,所以這里把二叉樹(shù)的基本概念復(fù)制過(guò)來(lái)了,如果讀過(guò)的人可以忽略前面針對(duì)二叉樹(shù)基本概念的介紹,另外如果對(duì)鏈...

    codeKK 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<