二叉查詢樹(BST)及其C語言實現

2021-06-14 11:39:44 字數 1249 閱讀 8743

對任何節點x,其左子樹中的關鍵字最大不超過key[x],右子樹中的關鍵字最小不小於key[x]。

二叉查詢樹這種資料結構,它支援多種動態集合操作,search,minimum,maximum,predecessor(前驅),successor(後繼),insert以及delete。在二叉查詢樹上執行的基本操作時間與樹的高度成正比。對於一棵含有n個節點的完全二叉樹,這些操作的最壞情況的執行時間為o(lgn)。這點明顯優於含有n個節點的線性鏈(線性鏈上執行這些操作最壞時間代價為o(n))。

這裡通過隨機生成100個整數並執行插入操作從而構建二叉查詢樹。

#include #include #include #define size 100

struct treenode

;//t表示根節點

treenode* t = null;

treenode *x, *y;

treenode* treeinsert(treenode* t, int value)

else

newnode -> parent = y;

if (newnode -> value < y -> value)

y -> left = newnode;

else

y -> right = newnode;

} return t;

}//中序遍歷二叉查詢樹,從小到大輸出所有節點

void inordertreewalk(treenode* x)

}//尋找bst中的最大元素

int findmax(treenode* t)

return t -> value;

}//尋找bst中的最小元素

int findmin(treenode* t)

return t -> value;

}int main()

//生成隨機數,插入節點

for (int i = 0; i < size; i ++)

printf("插入完成\n");

printf("中序遍歷的結果是:\n");

inordertreewalk(t);

int max = findmax(t);

printf("最大值是:%d\n", max);

int min = findmin(t);

printf("最小值是:%d\n", min);

getch();

return 0;

}

C語言實現二叉查詢樹(BST)的基本操作

我們在上一篇部落格中講解了二叉樹,這一次我們來實現二叉樹的高階 二叉查詢樹 binary search tree 又稱二插排序樹 binary sort tree 所以簡稱為bst。二插查詢樹的定義如下 1.若左子樹不為空,則左子樹上所有節點的值均小於它的根節點的值 2.若右子樹不為空,則右子樹上所...

二叉查詢樹C語言實現

二叉查詢樹c語言實現 1.二叉查詢樹的定義 左子樹不為空的時候,左子樹的結點值小於根節點,右子樹不為空時,右子樹的結點值大於根節點,左右子樹分別為二叉查詢樹 2.二叉查詢樹的最左邊的結點即為最小值,要查詢最小值,只需遍歷左子樹的結點直到為空為止,同理,最右邊的結點結尾最大值,要查詢最大值,只需遍歷右...

二叉查詢樹 C語言實現

二叉查詢樹 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 它的左 右子樹也分別為二叉查詢樹。在使用遞迴的時候,假如函式有返回值,記得接收返回值,並且保證函式在每個板塊結束後都有return,以防出錯。具體見find ins...