#include
#include
#include
using namespace std;
typedef struct bitnode /* 結點結構 */
bitnode, *bitree;
void initbst(bitree t)
int searchbst(bitree t, int key, bitree f, bitree &p)
/* 查詢不成功 */
else if(key==t->data)
/* 查詢成功 */
else if(keydata)
return searchbst(t->lchild, key, t, p); /* 在左子樹中繼續查詢 */
else
return searchbst(t->rchild, key, t, p); /* 在右子樹中繼續查詢 */
}void insertbst(bitree &t, int key) }
int deletebst(bitree t,int key)
}void delete(bitree &p) /* 從二叉排序樹中刪除結點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);}}
void printbst(bitree t)
int main ()
deletebst(root,5);
print(root);
//if(searchbst(root,2)) cout<<"查詢成功"/else cout<<"查詢不成功" } 在複習資料結構,把這個東西總結一下。這種結構是動態查詢表,這種動態是相對靜態查詢 順序查詢,折半查詢,分塊查詢等 來說的。對於各種靜態鍊錶,要達到查詢複雜度為o logn 必須要求有序 而要使插入刪除複雜度為o 1 必須是鍊錶儲存。動態查詢表就可以同時滿足這兩者。動態查詢表的特點是表結構本身在查詢過... name 二叉排序樹相關操作 author unimen date 2011 10 8 13 14 21 刪除結點比較麻煩,總結如下 4大種情況 1 結點p無右孩子 將該點的左孩子變為其在雙親中的同位孩子 1 p為其雙親的左孩子時將其的左孩子變為雙親的左孩子 2 p為其雙親的右孩子時將其的左孩子變為... include include include include struct tree node void insert node struct tree node int void pre order struct tree node void in order struct tree node ...二叉排序樹
二叉排序樹
二叉排序樹