久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

go語言實(shí)現(xiàn)平衡二叉樹 golang二叉樹遍歷

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

平衡二叉樹(AVL)

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

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

圖 2 可以看到以下特性:

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

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

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

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

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

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

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

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

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

go語言--Goroutines

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

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

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

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

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

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

先來看一個(gè)簡單的go語言代碼:

go語言的注釋方法:

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

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

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

常用方法:

示例代碼:

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

更多格式化方法可以訪問中的fmt包。

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

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

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

下表列出了go語言的數(shù)據(jù)類型:

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

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

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

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

Go 語言的運(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語言中的if語句和switch語句。另外還有一種控制語句叫select語句,通常與通道聯(lián)用,這里不做介紹。

if語法格式如下:

if ... else :

else if:

示例代碼:

語法格式:

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

示例代碼:

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

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

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

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

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

--THE END--

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

平衡二叉樹

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

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

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

網(wǎng)站名稱:go語言實(shí)現(xiàn)平衡二叉樹 golang二叉樹遍歷
文章分享:http://sd-ha.com/article48/doosohp.html

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

廣告

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

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