//二叉排序樹查詢
//建立二叉樹的結點結構定義
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 又稱為二叉查詢樹,它或者是一棵空樹,或者是具有下列性質的二叉樹 若它的左子樹不為空,則左子樹上所有結點的值均小於它的根節點的值 若它的右子樹不為空,則右子樹上所有結點的值均大於它的根節點的值 它的左 右子樹也分別為二叉排序樹 遞迴 二叉排序樹用中序遍歷之...