資料結構之二叉排序樹的原理及實現

2021-10-09 09:19:09 字數 940 閱讀 8105

二叉排序樹(binary sort tree)又叫做二叉查詢樹。

性質:若它的左子樹不為空,則左子樹上所有的節點的值均小於根節點的值;

若它的右子樹不為空,則右子樹上所有的節點的值均大於根節點的值;

它的左、右子樹也分別為二叉排序樹;

二叉樹的二叉鍊錶節點結構定義:

typedef struct bitnode               //節點結構

bitnode,*bitree;

二叉排序樹的查詢演算法實現:

/**

* 遞迴查詢二叉排序樹t中是否存在key

* 指標f指向t的雙親,其初始化呼叫值為null

* 若查詢成功,則指標p指向該資料元素節點,並返回true

* 否則指標p指向查詢路徑上訪問的最後乙個節點並返回false

*/status searchbst(bitree t,int key, bitree f,bitree *p)

else if (key == t->data) //查詢成功

else if(key < t->data)

return searchbst(t->lchild, key, t, p); //在左子樹繼續查詢

else

return searchbst(t->rchild, key, t, p); //在右子樹繼續查詢

}

二叉排序樹插入操作:

/**

* 二叉排序樹的插入操作

* 當二叉排序樹t中中不存在關鍵字等於key的資料元素時

* 插入key並返回true,否則返回false

*/status insertbst(bitree *t, int key)

else

}

資料結構之二叉排序樹

二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有節點的值均小於它的根節點的值 2 若右子樹不空,則右子樹上所有節點的值均大於它的根節點的值 3 左 右子樹也分別為二叉排序樹 4 沒有鍵值相等的節點。以下只建立並先序列印出二叉排序樹 include include...

資料結構之二叉排序樹

二叉排序樹 bst binary sort search tree 對於二叉排序樹的任何乙個非葉子節點,要求左子節點的值比當前節點的值小,右子節點的值比當前節點的值大。特別說明 如果有相同的值,可以將該節點放在左子節點或右子節點 比如針對前面的資料 7,3,10,12,5,1,9 對應的二叉排序樹為...

資料結構之二叉排序樹

別名 二叉搜素樹,二叉查詢樹 線性結構的缺點 順序儲存 不排序 查詢困難,只能通過線性查詢乙個乙個找 排序 刪除和插入操作困難 鏈式結構 無論排序還是不排序,查詢都十分麻煩 注 二叉排序樹 bst 可以解決上述的問題 對於乙個二叉樹中的任意乙個非葉子節點,要求左子節點比當前節點小,右子節點比當前節點...