国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

中文網(wǎng)站做google廣告怎么樣北京企業(yè)網(wǎng)站推廣哪家公司好

中文網(wǎng)站做google廣告怎么樣,北京企業(yè)網(wǎng)站推廣哪家公司好,專業(yè)手機(jī)網(wǎng)站建設(shè)公司排名,濟(jì)南網(wǎng)站建設(shè)企業(yè)目錄 一、AVL樹(shù)的定義二、AVL樹(shù)的作用三、AVL樹(shù)的插入操作插入——平衡因子的更新插入——左單旋插入——右單旋插入——左右雙旋插入——右左雙旋 四、ALVL樹(shù)的驗(yàn)證五、AVL樹(shù)的性能 一、AVL樹(shù)的定義 AVL樹(shù),全稱 平衡二叉搜索(排序)樹(shù)。 二…

目錄

  • 一、AVL樹(shù)的定義
  • 二、AVL樹(shù)的作用
  • 三、AVL樹(shù)的插入操作
    • 插入——平衡因子的更新
    • 插入——左單旋
    • 插入——右單旋
    • 插入——左右雙旋
    • 插入——右左雙旋
  • 四、ALVL樹(shù)的驗(yàn)證
  • 五、AVL樹(shù)的性能

一、AVL樹(shù)的定義

AVL樹(shù),全稱 平衡二叉搜索(排序)樹(shù)

二叉搜索樹(shù)雖可以縮短查找的效率,但如果數(shù)據(jù)有序或接近有序二叉搜索樹(shù)將退化為單支樹(shù),查找元素相當(dāng)于在順序表中搜索元素,效率低下。因此,兩位俄羅斯的數(shù)學(xué)家G.M.Adelson-Velskii和E.M.Landis在1962年發(fā)明了一種解決上述問(wèn)題的方法:當(dāng)向二叉搜索樹(shù)中插入新結(jié)點(diǎn)后,如果能保證每個(gè)結(jié)點(diǎn)的左右子樹(shù)高度之差的絕對(duì)值不超過(guò)1(需要對(duì)樹(shù)中的結(jié)點(diǎn)進(jìn)行調(diào)整),即可降低樹(shù)的高度,從而減少平均搜索長(zhǎng)度。

平衡因子(Balance Factor,簡(jiǎn)寫(xiě)為bf)
平衡因子(bf):結(jié)點(diǎn)的左子樹(shù)的深度減去右子樹(shù)的深度。也可以是右子樹(shù)的深度減去左子樹(shù)的深度。看個(gè)人實(shí)現(xiàn)而異。

即: 結(jié)點(diǎn)的平衡因子 = 左子樹(shù)的高度 - 右子樹(shù)的高度。
或者 節(jié)點(diǎn)的平衡因子 = 右子樹(shù)的高度 - 左子樹(shù)的高度。

AVL樹(shù)本質(zhì)上是一顆二叉查找樹(shù),但是它又具有以下特點(diǎn):

  • 它的左右子樹(shù)都是AVL樹(shù)
  • 左右子樹(shù)高度之差(簡(jiǎn)稱平衡因子)的絕對(duì)值不超過(guò)1(-1/0/1)

這就是一顆AVL樹(shù)
在這里插入圖片描述

二、AVL樹(shù)的作用

有一顆二叉樹(shù),他有n個(gè)節(jié)點(diǎn),如果他是一顆二叉搜索樹(shù),他形狀多樣,可能會(huì)形成單枝樹(shù),高度為n,那么在這顆搜索樹(shù)中查找元素的最壞時(shí)間復(fù)雜度為O(n),最好時(shí)間復(fù)雜度是O( l o g 2 n log_2 n log2?n)。
如果他是一顆AVL樹(shù),他的高度穩(wěn)定為 l o g 2 n log_2 n log2?n,查找元素的時(shí)間復(fù)雜度為O( l o g 2 n log_2 n log2?n)。在這里插入圖片描述
由上圖可知,同樣的結(jié)點(diǎn),由于插入方式不同導(dǎo)致樹(shù)的高度也有所不同。特別是在帶插入結(jié)點(diǎn)個(gè)數(shù)很多且正序的情況下,會(huì)導(dǎo)致二叉樹(shù)的高度是O(N),而AVL樹(shù)就不會(huì)出現(xiàn)這種情況,樹(shù)的高度始終是O(lgN).高度越小,對(duì)樹(shù)的一些基本操作的時(shí)間復(fù)雜度就會(huì)越小。這也就是我們引入AVL樹(shù)的原因。

三、AVL樹(shù)的插入操作

插入——平衡因子的更新

在插入一個(gè)元素的時(shí)候,必然會(huì)引起平衡因子的變化,所以我們需要在插入的時(shí)候把平衡因子同時(shí)更新,在平衡因子大于1或者小于-1時(shí),我們則需要進(jìn)行旋轉(zhuǎn)操作,進(jìn)行調(diào)整,使平衡因子再次正常,從而保證這顆二叉樹(shù)一直是一顆AVL樹(shù)。
?
使用平衡因子計(jì)算: 右子樹(shù)高度 - 左子樹(shù)高度

情況一:
在這里插入圖片描述
在插入元素后,需要更新父節(jié)點(diǎn)的平衡因子,在父節(jié)點(diǎn)的左子樹(shù)插入元素,父節(jié)點(diǎn)的平衡因子-1,在父節(jié)點(diǎn)的左子樹(shù)插入元素,父節(jié)點(diǎn)的平衡因子+1,如果父節(jié)點(diǎn)的平衡因子更新過(guò)后變?yōu)?或者-1,則需繼續(xù)往上更新至根節(jié)點(diǎn),因?yàn)?或者-1表示該節(jié)點(diǎn)的高度發(fā)生改變,需往上更新。

情況2:
在這里插入圖片描述
在插入元素后,需要更新父節(jié)點(diǎn)的平衡因子,在父節(jié)點(diǎn)的左子樹(shù)插入元素,父節(jié)點(diǎn)的平衡因子-1,在父節(jié)點(diǎn)的左子樹(shù)插入元素,父節(jié)點(diǎn)的平衡因子+1,如果父節(jié)點(diǎn)的平衡因子更新過(guò)后變?yōu)?,則不需要繼續(xù)向上更新,因?yàn)樽優(yōu)?只能說(shuō)明該樹(shù)高度沒(méi)有變化,只是相對(duì)于原來(lái)變得平衡。

如果在更新平衡因子后,平衡因子不在(-1/0/1)范圍時(shí),則需旋轉(zhuǎn)操作,下面講解如何進(jìn)行旋轉(zhuǎn)操作

由于插入需要旋轉(zhuǎn)的情況較多,大致可以分為四大類

插入——左單旋

動(dòng)圖演示
請(qǐng)?zhí)砑訄D片描述

情況一
右子樹(shù)高時(shí),在右子樹(shù)的右側(cè)插入元素,此時(shí)需要左單旋這里是引用

插入——右單旋

動(dòng)圖演示
請(qǐng)?zhí)砑訄D片描述

情況二、
左子樹(shù)較高時(shí),在左子樹(shù)的左側(cè)插入元素,此時(shí)需要右單旋這里是引用

插入——左右雙旋

情況三、左子樹(shù)較高時(shí),在左子樹(shù)的右側(cè)插入元素,此時(shí)需要左右雙旋,即:先對(duì)30進(jìn)行左單旋,然后再對(duì)90進(jìn)行右單旋這里是引用

插入——右左雙旋

情況四、右子樹(shù)較高時(shí),在右子樹(shù)的左側(cè)插入元素,此時(shí)需要右左雙旋,即:先對(duì)90進(jìn)行右單旋,然后再對(duì)30進(jìn)行左單旋
在這里插入圖片描述

四、ALVL樹(shù)的驗(yàn)證

int _Height(Node* root)
{//用來(lái)計(jì)算二叉樹(shù)的高度if (root == NULL)return 0;int leftH = _Height(root->_left);int rightH = _Height(root->_right);return leftH > rightH ? leftH + 1 : rightH + 1;
}bool _IsBalance(Node* root)
{if (root == NULL)return true;int leftH = _Height(root->_left);int rightH = _Height(root->_right);//檢查平衡因子if (rightH - leftH != root->_bf){cout << root->_kv.first << "節(jié)點(diǎn)平衡因子異常" << endl;return false;}//通過(guò)計(jì)算左右子樹(shù)的高度差判斷這顆二叉樹(shù)是否為AVL樹(shù)return abs(leftH - rightH) < 2&& _IsBalance(root->_left)&& _IsBalance(root->_right);//檢查高度差要檢查二叉樹(shù)中所有節(jié)點(diǎn)的左右子樹(shù)的高度差
}bool IsBalance()
{return _IsBalance(_root);
}

五、AVL樹(shù)的性能

AVL樹(shù)是一棵絕對(duì)平衡的二叉搜索樹(shù),其要求每個(gè)節(jié)點(diǎn)的左右子樹(shù)高度差的絕對(duì)值都不超過(guò)1,這樣可以保證查詢時(shí)高效的時(shí)間復(fù)雜度,即 l o g 2 n log_2 n log2?n 。

但是如果要對(duì)AVL樹(shù)做一些結(jié)構(gòu)修改的操作,性能非常低下,比如:插入時(shí)要維護(hù)其絕對(duì)平衡,旋轉(zhuǎn)的次數(shù)比較多,更差的是在刪除時(shí),有可能一直要讓旋轉(zhuǎn)持續(xù)到根的位置。因此:如果需要一種查詢高效且有序的數(shù)據(jù)結(jié)構(gòu),而且數(shù)據(jù)的個(gè)數(shù)為靜態(tài)的(即不會(huì)改變),可以考慮AVL樹(shù),但一個(gè)結(jié)構(gòu)經(jīng)常修改,就不太適合。

http://m.aloenet.com.cn/news/33189.html

相關(guān)文章:

  • 江都網(wǎng)站建設(shè)外鏈平臺(tái)
  • windows系統(tǒng)做ppt下載網(wǎng)站搜索引擎營(yíng)銷(xiāo)的主要模式
  • 網(wǎng)頁(yè)設(shè)計(jì)教程孟憲寧課后題答案seo實(shí)戰(zhàn)培訓(xùn)王乃用
  • 像芥末堆做內(nèi)容的網(wǎng)站百度上怎么發(fā)布作品
  • 用服務(wù)器ip怎么做網(wǎng)站百度官方推廣
  • php網(wǎng)站開(kāi)發(fā)最新需求商家聯(lián)盟營(yíng)銷(xiāo)方案
  • 網(wǎng)站建設(shè)公司價(jià)seo營(yíng)銷(xiāo)軟件
  • 做網(wǎng)站的成本有多少網(wǎng)絡(luò)媒體軟文案例
  • 幫人做網(wǎng)站賺錢(qián)小程序開(kāi)發(fā)制作
  • 南寧建站軟件小廣告公司如何起步
  • 網(wǎng)站備案信息查詢百度小說(shuō)排行榜2020前十名
  • 怎么做用戶調(diào)研網(wǎng)站軟文
  • 大理網(wǎng)站設(shè)計(jì)如何讓百度收錄網(wǎng)址
  • 河南推廣網(wǎng)站的公司怎樣在網(wǎng)上推廣自己的產(chǎn)品
  • 打開(kāi)汽車(chē)之家網(wǎng)頁(yè)版網(wǎng)絡(luò)seo外包
  • 怎么做素材網(wǎng)站上海最新政策
  • 2016年做網(wǎng)站好不好qq推廣鏈接生成
  • 網(wǎng)站舉報(bào)平臺(tái)12315怎樣制作網(wǎng)頁(yè)設(shè)計(jì)
  • 男人和女人晚上做污污的視頻大網(wǎng)站ip子域名大全
  • 企業(yè)查詢平臺(tái)免費(fèi)廣州網(wǎng)站優(yōu)化頁(yè)面
  • 七臺(tái)河新聞?lì)^條最新消息網(wǎng)站優(yōu)化排名易下拉穩(wěn)定
  • 俄羅斯外貿(mào)常用網(wǎng)站海淀區(qū)seo搜索引擎
  • 源代碼管理網(wǎng)站百度推廣優(yōu)化方案
  • 佛山外貿(mào)網(wǎng)站設(shè)計(jì)高手優(yōu)化網(wǎng)站
  • 四川高速公路建設(shè)集團(tuán)網(wǎng)站網(wǎng)站設(shè)計(jì)與開(kāi)發(fā)
  • 淘寶裝修免費(fèi)模板有哪些網(wǎng)站網(wǎng)站制作公司咨詢
  • 凡科專屬網(wǎng)站免費(fèi)注冊(cè)外鏈生成工具
  • 哪個(gè)網(wǎng)站做推銷(xiāo)產(chǎn)品品牌seo主要做什么
  • 貴州網(wǎng)站建設(shè)360指數(shù)查詢工具
  • 做政府網(wǎng)站話術(shù)seo系統(tǒng)是什么意思