兩組測試資料:
#include
#include
#define endkey 0
typedef
int keytype;
typedef
struct node
bstnode,
*bstree;
void
insertbst
(bstree *t, keytype key)
/*若在二叉排序樹中不存在關鍵字等於key的元素,插入該元素*/
else
if(key <
(*t)
->key)
insertbst(&
((*t)->lchild)
, key)
;/*若插入的key的值小於根節點,則將s插入左子樹*/
else
insertbst(&
((*t)->rchild)
, key)
;/*反之,將s插入右子樹*/
}/******生成二叉排序樹******/
void
createbst
(bstree *t)
}void
preorder
(bstree root)
/*遞迴先序遍歷二叉樹, root為指向二叉樹根結點的指標*/
}bstree searchbst
(bstree bst, keytype key)
/*在根指標bst所指二叉排序樹bst上,查詢關鍵字等於key的結點,若查詢成功,返回指向該元素結點指標,否則返回空指標*/
return
null
;/*查詢失敗*/
}bstnode *
delbst
(bstree t, keytype k)
/*在二叉排序樹t中刪去關鍵字為k的結點*/
if(p==
null
)return t;
斜體樣式第一種情況,當被刪除的的結點p沒有左子樹時
此時p的位置分三種情:
first:p為根節點
second:p不為根,即有雙親結點,且p為雙親結點f的左子樹
third:p不為根,即有雙親結點,且p為雙親結點f的右子樹
if
(p->lchild==
null
)/*p無左子樹*/
else
/*p有左子樹,即 p->lchild != null*/
/*將s的左子樹鏈到q上*/
else
q->rchild=s->lchild;
p->key=s->key;
/*將s的值賦給p*/
free
(s);
}return t;
}void
main()
測試截圖: DataStructure 8 查詢技術
8.1概述 1 查詢方式分類 靜態查詢 不涉及插入 刪除操作的查詢 動態查詢 涉及插入 刪除操作的查詢 2 查詢結構 線性表 適用於靜態查詢,主要採用順序查詢技術,折半查詢技術.樹表 適用於動態查詢,主要採用二叉排序樹查詢技術.雜湊表 靜態查詢和動態查詢均適用,主要採用雜湊技術.3 查詢演算法的效能...
data structure 之棧與佇列
問題一 用兩個佇列實現乙個棧 思路 定義兩個佇列分別為q1,q2。呼叫棧的push操作時,直接將元素push到佇列q1中,時間複雜度為o 1 呼叫棧的pop操作時,先把q1中的q1.size 1個元素push到q2中,然後再pop出q1中的最後乙個元素,再把q2中的所有元素全部push到q1中,時間...
DataStructure 排序 原始碼實現
本篇部落格實現了 1.氣泡排序 2.氣泡排序的一種優化 當某次冒泡沒有進行交換時,退出迴圈 3.選擇排序 4.歸併排序 5.快速排序。主要是原始碼的實現,並將自己在敲的過程中所遇到的一些問題記錄下來。include include include using namespace std int nu...