程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 8.5 二叉排序樹和平衡二叉樹

8.5 二叉排序樹和平衡二叉樹

編輯:關於C語言

8.5 二叉排序樹

有序線性表在查找時很方便,但是插入和刪除操作,會消耗大量的時間,因為插入和刪除後,為了保持線性有序,會移動大量的數據。可以用二叉排序樹來解決這個問題。

二叉排序樹,又稱為二叉查找樹。它或者是一棵空樹,或者具有下列性質的二叉樹:

1)若它的左子樹存在,則左子樹上所有節點的值均小於它的根節點的值;

2)若它的右子樹存在,則右子樹上所有節點的值均大於它的根節點的值;

3)它的左、右子樹也分別為二叉排序樹。

構造二叉排序樹的目的,並不是為了排序,而是為了提高查找和插入或刪除關鍵字的速度。

二叉排序樹以鏈接的方式存儲,保持了鏈接存儲結構在執行插入或刪除操作時不用移動元素的有點,只要找到合適的插入和刪除位置後,僅需要修改鏈接指針即可。

8.6 平衡二叉樹

在構造二叉排序樹的時候,是按數組中元素依次構造的,使其滿足二叉樹的性質,對於一個正序排列的數組,構造二叉樹的時候,會成為右斜的二叉樹,沒有左子樹,這樣會影響查找效率。所以構建平衡二叉樹。

平衡二叉樹:是一種二叉排序樹,其中每一個節點的左子樹和右子樹的告訴差至多等於1。

構造原理:每當插入一個節點時,先檢查是否因為插入破壞了樹的平衡性,若是,則找出最小不平衡樹,在保持二叉排序樹的前提下,調整最小不平衡子樹中各節點之間的鏈接關系,進行相應的旋轉,使之成為新的平衡樹。

 

本文出自 “李海川” 博客,請務必保留此出處http://lihaichuan.blog.51cto.com/498079/1282363

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved