資料結構之二叉搜尋樹

2021-09-30 14:31:46 字數 1252 閱讀 5111

什麼是二叉搜尋樹呢?它與別的資料結構相比其優勢又是什麼呢?

一顆二叉搜尋樹就是以一顆二叉樹來組織和儲存資料的,如圖所示(圖a是包含6個節點、高度為2的二叉樹,圖b是包含相同關鍵字、高度為4的低效二叉樹)。對比博文前面所介紹的鍊錶,二叉樹也是可以用結構體來實現,只不過每個節點裡面不僅要儲存資料本身的關鍵字(稱之為key),還要有左節點(左孩子left)、右節點(右孩子right)、父節點(p);根節點的父節點為null。基本概念了解後,我們要明確二叉樹要滿足:對每個節點而言,其中儲存的關鍵字key不小於其左孩子的key,要不大於其右孩子的key。

接下來我們要明確的是採用該種資料結構的優勢:二叉樹上的基本操作(查詢,找到最小值,找到最大值,找到乙個節點的前驅或後繼,插入,刪除等)所花費的時間與樹的高度成正比。(證明見演算法書第十二章)

那我們只要知道這樣的資料結構什麼時候用好就ok了,下面的**也不用自己會編,關鍵是編碼思想的掌握。

然後就是**實現一些基本操作(search、minnum、maxnum、predecessor、successor、insert、delete)

#includestruct listnodeofbinarytree

;void inordertreewalk(listnodeofbinarytree* x)

}//中序遍歷輸出

listnodeofbinarytree* treesearch(listnodeofbinarytree* x, int k)

else return treesearch(x->left, k);遞迴版本*/

while (x&&x->key != k)

else x = x->right;

} return x;

}//在以x為根的樹中查詢關鍵字為k的元素位置。

listnodeofbinarytree* minnum(listnodeofbinarytree* x)

return x;

}listnodeofbinarytree* maxnum(listnodeofbinarytree* x)

return x;

}

資料結構與演算法之二叉搜尋樹

看到有個傢伙寫的很好 二叉查詢樹 二 之 c 的實現 二叉搜尋樹的定義 一棵二叉樹,可能為空 一棵非空的二叉搜尋樹滿足以下特徵 每個元素有乙個關鍵字,並且任意兩個元素的關鍵字都不同,因此,所有的關鍵字都是唯一的。在根節點的左子樹中,元素的關鍵字 如果有的話 都小於根節點的關鍵字。在根節點的右子樹中,...

演算法與資料結構之二叉搜尋樹

搜尋樹與二叉搜尋樹 搜尋樹是一種可以進行插入 搜尋 刪除等操作的資料結構。它可以用作字典或者優先順序佇列。二叉搜尋樹是最基本的搜尋樹。它的各個結點都有鍵值,並且滿足以下的條件 設x是二叉搜尋樹中的結點,y是它的左子樹中的結點,那麼,y的鍵值 x的鍵值。根據這一特點,我們就能實現一棵二叉搜尋樹。二叉搜...

資料結構之 二叉搜尋樹 二叉排序樹 BST樹

二叉搜尋樹簡稱bst樹 二叉搜素樹是二叉樹的一種,陣列這種資料結構也能夠實現對元素的快速查詢,但是對於元素的新增 刪除和更新操作,使用陣列來實現的話,就會存在較高的時間複雜度 o n 級別。對於新增 刪除 查詢操作若是要保持較低的時間複雜度可以採用二叉搜尋樹來實現。二叉搜尋樹又稱二叉排序樹,其節點之...