二叉排序樹的查詢(插入 刪除)

2021-08-14 01:18:16 字數 1238 閱讀 5961

近期逐步開始期末複習,在部落格上投入的精力將大幅減少大概一月左右!

/*二叉樹的二叉鍊錶結點結構定義*/

typedef struct bitnodebitnode, *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) //若key小於當前data值,則在左子樹中繼續尋找

return searchbst(t->lchild, key, t, p);

else

//若key大於當前data值,則在右子樹中繼續尋找

return searchbst(t->rchild, key, t, p);

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

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

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

else

return

false; //樹中已有關鍵字相同的結點,不需要插入

}/*若二叉排序樹t中存在關鍵字等於key的資料元素時,刪除該資料元素結點,並返回true;否則返回false*/

status deletebst(bitree *t, int key)

}status delete(bitree *p)else

if ((*p)->lchild ==

null)else

(*p)->

data

= s->

data; //s指向被刪結點的直接前驅

if (q !=

*p) q->rchild = s->lchild; //重接q的右子樹

else

q->lchild = s->lchild; //重接q的左子樹

free(s);

}return

true;

}

二叉排序樹 插入 刪除 查詢

原本是想寫關於android分享功能的部落格,但是沒真機不好去測試,大白天的手機被3歲娃娃,拿去看少兒頻道了,關於二叉排序樹的定義是 二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 2 若右子樹不空,則右子樹上所有結點的值均大於它的...

二叉排序樹的查詢 插入 刪除

二叉排序樹的查詢 插入 刪除 何謂二叉排序樹 定義 二叉排序樹又稱二叉查詢樹,它或者是一顆空樹,或者是具有以下性質的二叉樹 1 若它的左子樹不空,則左子樹上所有節點的值均小於該節點的值。2 若它的右子樹不空,則右字樹上所有節點的值均大於該節點的值。3 它的左右子樹也分別為二叉排序樹。時間複雜度 o ...

二叉排序樹的查詢,插入,刪除

老規矩先上 include 這裡我們設了兩個引用,乙個是b是a的引用,乙個是c是b的引用,即a就是b就是c,三者等價 voidf1 int voidf2 int intmain voidf1 int b voidf2 int c 最終執行的結果為 從結果可以看出,a,b,c三者共用同一儲存單元.最後...