<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • go語(yǔ)言實(shí)現(xiàn)平衡二叉樹(shù) golang二叉樹(shù)遍歷

            平衡二叉樹(shù)的各種算法實(shí)現(xiàn)

            平衡二叉樹(shù)(AVL)

            站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到江陰網(wǎng)站設(shè)計(jì)與江陰網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋江陰地區(qū)。

            那對(duì)圖 1 進(jìn)行下改造,把數(shù)據(jù)重新節(jié)點(diǎn)重新連接下,圖 2 如下:

            圖 2 可以看到以下特性:

            1. 所有左子樹(shù)的節(jié)點(diǎn)都小于其對(duì)應(yīng)的父節(jié)點(diǎn)(4,5,6)(7);(4)(5);(8) (9);

            2. 所有右子樹(shù)上的節(jié)點(diǎn)都大于其對(duì)應(yīng)的父節(jié)點(diǎn)(8,9,10)(7);(6)(5);(10)(9);

            3. 每個(gè)節(jié)點(diǎn)的平衡因子差值絕對(duì)值 =1;

            4. 每個(gè)節(jié)點(diǎn)都符合以上三個(gè)特征。

            滿足這樣條件的樹(shù)叫平衡二叉樹(shù)(AVL)樹(shù)。

            問(wèn):那再次查找節(jié)點(diǎn) 5,需要遍歷多少次呢?

            由于數(shù)據(jù)是按照順序組織的,那查找起來(lái)非???,從上往下找:7-5,只需要在左子樹(shù)上查找,也就是遍歷 2 次就找到了 5。假設(shè)要找到葉子節(jié)點(diǎn) 10,只需要在右子樹(shù)上查找,那也最多需要 3 次,7-9-10。也就說(shuō) AVL 樹(shù)在查找方面性能很好,最壞的情況是找到一個(gè)節(jié)點(diǎn)需要消耗的次數(shù)也就是樹(shù)的層數(shù), 復(fù)雜度為 O(logN)

            如果節(jié)點(diǎn)非常多呢?假設(shè)現(xiàn)在有 31 個(gè)節(jié)點(diǎn),用 AVL 樹(shù)表示如圖 3:

            圖 3 是一棵高度為 4 的 AVL 樹(shù),有 5 層共 31 個(gè)節(jié)點(diǎn),橙色是 ROOT 節(jié)點(diǎn),藍(lán)色是葉子節(jié)點(diǎn)。對(duì) AVL 樹(shù)的查找來(lái)看起來(lái)已經(jīng)很完美了,能不能再優(yōu)化下?比如,能否把這個(gè)節(jié)點(diǎn)里存放的 KEY 增加?能否減少樹(shù)的總層數(shù)?那減少縱深只能從橫向來(lái)想辦法,這時(shí)候可以考慮用多叉樹(shù)。

            go語(yǔ)言--Goroutines

            1、goroutine:在go語(yǔ)言中,每一個(gè)并發(fā)的執(zhí)行單元叫做goroutine,如果一個(gè)程序中包含多個(gè)goroutine,對(duì)兩個(gè)函數(shù)的調(diào)用則可能發(fā)生在同一時(shí)刻

            2、main goroutine:當(dāng)一個(gè)程序啟動(dòng)時(shí),其主函數(shù)即在一個(gè)單獨(dú)的goroutine中運(yùn)行,我們叫他為main gorountine

            3、go goroutine:新的goroutine會(huì)用go語(yǔ)句來(lái)創(chuàng)建,go+函數(shù)名,go語(yǔ)句會(huì)使其語(yǔ)句中的函數(shù)在一新創(chuàng)建的goroutine中運(yùn)行,而go語(yǔ)句本身會(huì)迅速地完成

            4、goroutine的退出:主函數(shù)返回時(shí),所有的goroutine都會(huì)被直接打斷,程序退出,除了從主函數(shù)退出或者終止程序之外,沒(méi)有其他方法能夠讓一個(gè)goroutine來(lái)打斷另一個(gè)的執(zhí)行,但是可以通過(guò)另一種方式來(lái)實(shí)現(xiàn)這個(gè)目的,通過(guò)goroutine之間的通信來(lái)讓一個(gè)goroutine請(qǐng)求其他的goroutine,并讓請(qǐng)求的goroutine自行結(jié)束執(zhí)行

            Go語(yǔ)言基礎(chǔ)語(yǔ)法(一)

            本文介紹一些Go語(yǔ)言的基礎(chǔ)語(yǔ)法。

            先來(lái)看一個(gè)簡(jiǎn)單的go語(yǔ)言代碼:

            go語(yǔ)言的注釋方法:

            代碼執(zhí)行結(jié)果:

            下面來(lái)進(jìn)一步介紹go的基礎(chǔ)語(yǔ)法。

            go語(yǔ)言中格式化輸出可以使用 fmt 和 log 這兩個(gè)標(biāo)準(zhǔn)庫(kù),

            常用方法:

            示例代碼:

            執(zhí)行結(jié)果:

            更多格式化方法可以訪問(wèn)中的fmt包。

            log包實(shí)現(xiàn)了簡(jiǎn)單的日志服務(wù),也提供了一些格式化輸出的方法。

            執(zhí)行結(jié)果:

            下面來(lái)介紹一下go的數(shù)據(jù)類(lèi)型

            下表列出了go語(yǔ)言的數(shù)據(jù)類(lèi)型:

            int、float、bool、string、數(shù)組和struct屬于值類(lèi)型,這些類(lèi)型的變量直接指向存在內(nèi)存中的值;slice、map、chan、pointer等是引用類(lèi)型,存儲(chǔ)的是一個(gè)地址,這個(gè)地址存儲(chǔ)最終的值。

            常量是在程序編譯時(shí)就確定下來(lái)的值,程序運(yùn)行時(shí)無(wú)法改變。

            執(zhí)行結(jié)果:

            執(zhí)行結(jié)果:

            Go 語(yǔ)言的運(yùn)算符主要包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符以及指針相關(guān)運(yùn)算符。

            算術(shù)運(yùn)算符:

            關(guān)系運(yùn)算符:

            邏輯運(yùn)算符:

            位運(yùn)算符:

            賦值運(yùn)算符:

            指針相關(guān)運(yùn)算符:

            下面介紹一下go語(yǔ)言中的if語(yǔ)句和switch語(yǔ)句。另外還有一種控制語(yǔ)句叫select語(yǔ)句,通常與通道聯(lián)用,這里不做介紹。

            if語(yǔ)法格式如下:

            if ... else :

            else if:

            示例代碼:

            語(yǔ)法格式:

            另外,添加 fallthrough 會(huì)強(qiáng)制執(zhí)行后面的 case 語(yǔ)句,不管下一條case語(yǔ)句是否為true。

            示例代碼:

            執(zhí)行結(jié)果:

            下面介紹幾種循環(huán)語(yǔ)句:

            執(zhí)行結(jié)果:

            執(zhí)行結(jié)果:

            也可以通過(guò)標(biāo)記退出循環(huán):

            --THE END--

            設(shè)計(jì)算法統(tǒng)計(jì)二叉樹(shù)中平衡結(jié)點(diǎn)的個(gè)數(shù)

            平衡二叉樹(shù)

            :首先要求是一棵二叉排序樹(shù),然后要求每個(gè)結(jié)點(diǎn)的平衡因子(左子樹(shù)高度減右子樹(shù)高度)在1,0,-1之間。

            給定二叉樹(shù)根節(jié)點(diǎn)root, 編程判斷一個(gè)二叉樹(shù)是否為平衡二叉樹(shù)

            算法思路:按照某種遍歷規(guī)則遍歷二叉樹(shù),在遍歷的過(guò)程中,檢查根是不是大于左子樹(shù)(不空時(shí))的根而且小于右子樹(shù)(不空時(shí))的根,并計(jì)算左右子樹(shù)高度之差是在在1,0,-1之間。如果所有結(jié)點(diǎn)都滿足這兩條件則為平衡二叉樹(shù)

            網(wǎng)站名稱(chēng):go語(yǔ)言實(shí)現(xiàn)平衡二叉樹(shù) golang二叉樹(shù)遍歷
            文章分享:http://www.jbt999.com/article48/doosohp.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)服務(wù)器托管、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、云服務(wù)器網(wǎng)站制作

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

            網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 国产黄永久 | 日韩av高清无码 五月天婷婷丁香网 | 九九成人| 夜夜嗨网站 | 天天躁日日躁狠狠 |