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

2021-07-10 13:15:52 字數 1000 閱讀 7706

//二叉排序樹查詢

//建立二叉樹的結點結構定義

typedef struct bitnode

bitnode,*bitree;

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

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

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

//若查詢不成功,p指向查詢路徑訪問的最後乙個結點,並返回false

status search_bst(bitree t, int key, bitree f, bitree *p)

else if(key == t->data)

else if(keydata)

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

else if(key>t->data)

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

}

//二叉排序樹插入操作,如果找不到key,就將key插入到合適的位置

status insertbst(bitree t, int key)

else if(keydata)

else if(key>p->data)

return true;

}else

}

//二叉排序樹刪除操作

status deletebst(bitree t, int key)

}status delete(bitree p)

else if(p->lchild==null)//左子樹為空

else //左右子樹均不為空

p->data = s->data;

if(q!=p && !(s->lchild))

else

free(s);

}return true;

}

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

二叉查詢樹 和二分查詢一樣,插入和查詢的時間複雜度均為o logn 但是在最壞的情況下仍然會有o n 的時間複雜度 include tree.h include using namespace std typedef struct bitnodebitnode 遞迴插入 bitnode recurs...

二叉排序樹 插入 刪除 查詢

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

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

二叉排序樹 binary sort tree 又稱為二叉查詢樹,它或者是一棵空樹,或者是具有下列性質的二叉樹 若它的左子樹不為空,則左子樹上所有結點的值均小於它的根節點的值 若它的右子樹不為空,則右子樹上所有結點的值均大於它的根節點的值 它的左 右子樹也分別為二叉排序樹 遞迴 二叉排序樹用中序遍歷之...