二叉排序樹與堆的區別

2021-09-24 02:59:36 字數 628 閱讀 6777

在二叉排序樹中,每個結點的值均大於其左子樹上所有結點的值,小於其右子樹上所有結點的值,對二叉排序樹進行中序遍歷得到乙個有序序列。所以,二叉排序樹是結點之間滿足一定次序關係的二叉樹;

堆是乙個完全二叉樹,並且每個結點的值都大於或等於其左右孩子結點的值(這裡的討論以大根堆為例),所以,堆是結點之間滿足一定次序關係的完全二叉樹。

具有n個結點的二叉排序樹,其深度取決於給定集合的初始排列順序,最好情況下其深度為log n(表示以2為底的對數),最壞情況下其深度為n;

具有n個結點的堆,其深度即為堆所對應的完全二叉樹的深度log n 。

在二叉排序樹中,某結點的右孩子結點的值一定大於該結點的左孩子結點的值;在堆中卻不一定,堆只是限定了某結點的值大於(或小於)其左右孩子結點的值,但沒有限定左右孩子結點之間的大小關係。

在二叉排序樹中,最小值結點是最左下結點,其左指標為空;最大值結點是最右下結點,其右指標為空。在大根堆中,最小值結點位於某個葉子結點,而最大值結點是大根堆的堆頂(即根結點)。

二叉排序樹是為了實現動態查詢而設計的資料結構,它是面向查詢操作的,在二叉排序樹中查詢乙個結點的平均時間複雜度是o(log n);

堆是為了實現排序而設計的一種資料結構,它不是面向查詢操作的,因而在堆中查詢乙個結點需要進行遍歷,其平均時間複雜度是o(n)。

二叉排序樹與堆的區別

在二叉排序樹中,每個結點的值均大於其左子樹上所有結點的值,小於其右子樹上所有結點的值,對二叉排序樹進行中序遍歷得到乙個有序序列。所以,二叉排序樹是結點之間滿足一定次序關係的二叉樹 堆是乙個完全二叉樹,並且每個結點的值都大於或等於其左右孩子結點的值 這裡的討論以大根堆為例 所以,堆是結點之間滿足一定次...

二叉排序樹BST與堆的區別

原文出處 在二叉排序樹中,每個結點的值均大於其左子樹上所有結點的值,小於其右子樹上所有結點的值,對二叉排序樹進行中序遍歷得到乙個有序序列。所以,二叉排序樹是結點之間滿足一定次序關係的二叉樹。堆是乙個完全二叉樹,並且每個結點的值都大於或等於其左右孩子結點的值 這裡的討論以大根堆為例 所以,堆是結點之間...

二叉排序樹

在複習資料結構,把這個東西總結一下。這種結構是動態查詢表,這種動態是相對靜態查詢 順序查詢,折半查詢,分塊查詢等 來說的。對於各種靜態鍊錶,要達到查詢複雜度為o logn 必須要求有序 而要使插入刪除複雜度為o 1 必須是鍊錶儲存。動態查詢表就可以同時滿足這兩者。動態查詢表的特點是表結構本身在查詢過...