二叉排序樹

來源:互聯網
上載者:User

標籤:一半   刪除演算法   沒有   問題   所有結點   串連   相等   結果   為什麼   

一.二叉排序樹產生原因

  為什麼要有二叉排序樹這種資料結構的產生?對於一個既要排序、又要支援高效的尋找、插入和刪除操作的資料元素集合,將其組織成一個什麼樣的資料結構能夠滿足要求?我們對於排序次序表、排序單鏈表和散列表這幾種資料結構進行分析:

  (1)排序次序表,可以採用折半尋找法,時間效率為O(log2n);插入和刪除的操作時間複雜度為O(n),資料移動量大,效率較低。

  (2)排序單鏈表,順序尋找的時間效率為O(n),不能採用折半尋找演算法;插入和刪除操作的時間複雜度為O(n),雖然沒有資料移動但因為查詢找效率低下,使得插入和刪除的效率也較低。

  (3)散列表,雖然尋找、插入和刪除操作的效率較高,但是散列表不具有排序特性。

  上述幾種資料結構不能滿足問題的要求。我們一樹結構來研究這個問題。

  二叉排序樹是一種既支援排序、又支援高效的尋找、插入和刪除操作的資料群組織方案,她的尋找等操作效率可達到O(log2n)。

  在一棵二叉樹中尋找一個節點,需要在遍曆二叉樹的過程中對節點逐個進行比較,這是順序尋找演算法,尋找效率為O(n)。如果一顆二叉樹是排序的,則沒經過一次比較,根據比較結果,可在當前節點的左子樹和右子樹中選擇其一繼續,從而將尋找範圍縮小了一半,        一次尋找只需要經過從根到某節點的一條路徑就可獲得尋找結果,比較次數最多是二叉樹的高度,尋找效率為O(log2n)。遠低於O(n).

二、二叉排序樹的定義

  二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹;

  (1)每個結點都有一個作為尋找一句的關鍵字,所有結點的關鍵字互不相同。

  (2)若一個結點的左子樹不空,則左子樹上所有結點的關鍵字均小於這個結點的關鍵字;若一個結點的右子樹不為空白,則右子樹上所有結點的關鍵字均大於這個結點的關鍵字。

  (3)每個結點的左、右子樹也分別為二叉排序樹。

  一個二叉排序樹中序遍曆得到的關鍵字是升序的。

三、二叉樹的尋找

  在一棵二叉排序樹中,尋找關鍵字key元素結點,演算法描述如下:

  (1)從根節點開始,設p指向根節點

  (2)將p結點的關鍵字與key比較,若兩者相等,則尋找成功;若key較小,則在p的左子樹中繼續尋找;若key較大,則在p的右子樹中繼續尋找。

  (3)重複執行上一步,直到尋找成功或p為空白。若p為空白,則尋找不成功。

四、二叉排序樹的插入

  一棵二叉排序樹,插入一個結點之後必須仍然是二叉排序樹。每插入一個結點,首先需要找到該結點在二叉排序樹中的插入位置,若具有相同關鍵字的結點已經在二叉排序樹中,則不插入;否則將新結點作為椰子結點串連在其尋找不成功的一條路徑之尾,

該路徑從根結點到某個原葉子結點。因此,給定一棵二叉樹,一個結點的插入位置是唯一的。

五、二叉排序樹的刪除

  在二拆排序樹中刪除一個結點,首先尋找該節點,若存在,則根據結點的度對二叉排序樹進行不同程度的調整,使刪除結點後的二叉樹仍然是二叉排序樹。

  設p指向待刪除的結點,parent指向p的父結點。根據p的維度不同,二叉排序樹的刪除演算法分以下三種演算法。

  (1)p是葉子結點。若p是parent的左孩子,刪除p結點並設定parent的left鏈為空白;若p是右孩子,刪除p結點並設定parent的right鏈為空白。

  (2)p是1度結點,刪除p結點並用p的孩子填補作為parent的孩子,共有四中情況。

    a.若p是parent的左孩子且p有左孩子,設定parent的left鏈指向p的左孩子。

    b.若p是parent的左孩子且p有右孩子,設定parent的left鏈指向p的右孩子。

    c.若p是parent的右孩子且p有左孩子,設定parent的right鏈指向p的左孩子。

    d.若p是parent的右孩子且p有右孩子,設定parent的right鏈指向p的右孩子。

  (3)p是2度結點,不直接刪除p結點,而是先用p的中根次序下的後繼空額到嗎insucc值代替p結點值,再刪除insucc結點。這樣將刪除2度結點問題轉換為刪除1度結點或葉子結點,使得對二叉排序樹的調整減少到最小程度。

  

二叉排序樹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.