二叉排序樹
建立二叉樹,並將資料插入到結點中。程式執行後會將原資料進行從小到大排序,並輸出排序結果
//定義陣列source,並設定陣列裡面的資料。然後定義函式insertbst(),用於在二叉樹排序插入關鍵字key。首先查詢要插入資料的父結點,然後根據插入資料的key于父結點值的大小,決定將結點插入到父結點的左子樹還是右子樹。
#include#include #include#include#define arraylen 10
int source=;
typedef struct bst
bstree;
void insertbst(bstree *t,int key) //在二叉排序樹中插入查詢關鍵字key
p->data=key; //儲存結點資料
p->left=p->right=null; //左右子樹置空
head=t;
while(head) //查詢需要新增的父結點
//判斷新增到左子樹還是右子樹
if(keydata) //小於父結點
parent->left=p; //新增到左子樹
else //大於父結點
parent->right=p; //新增到右子樹
}//定義函式createbst(),將陣列中的資料全部插入到二叉排序樹中。
void createbst(bstree *t,int data,int n) //n個資料在陣列d中,tree為二叉排序樹根
return ;
}//定義主函式main()用於輸出測試結果
int main()
;typedef struct bst
bstree;
void insertbst(bstree *t,int key) //在二叉排序樹中插入查詢關鍵字key
p->data=key; //儲存結點資料
p->left=p->right=null; //左右子樹置空
head=t;
while(head) //查詢需要新增的父結點
//判斷新增到左子樹還是右子樹
if(keydata) //小於父結點
parent->left=p; //新增到左子樹
else //大於父結點
parent->right=p; //新增到右子樹
}//定義函式createbst(),將陣列中的資料全部插入到二叉排序樹中。
void createbst(bstree *t,int data,int n) //n個資料在陣列d中,tree為二叉排序樹根
return ;
}//刪除結點
void bst_delete(bstree *t,int key)
else if(child==0) //父結點為左子樹
else
}else if(!p->left) //左子樹為空,右子樹不為空
else if(!p->right) //右子樹為空,左子樹不為空
else //左右子樹都不為空
p->data=l->data; //將左子樹的資料儲存到被刪除的結點
ll->left=null; //設定父結點的左子樹指標為空
free(ll); //釋放左子樹佔的記憶體空間
}p=null;
} else if(keydata) //需刪除記錄的關鍵字小於結點的關鍵字
else //需刪除記錄的關鍵字大於結點的關鍵字 }
}//定義主函式main()用於輸出測試結果
int main()
;typedef struct bst
bstree;
void insertbst(bstree *t,int key) //在二叉排序樹中插入查詢關鍵字key
p->data=key; //儲存結點資料
p->left=p->right=null; //左右子樹置空
head=t;
while(head) //查詢需要新增的父結點
//判斷新增到左子樹還是右子樹
if(keydata) //小於父結點
parent->left=p; //新增到左子樹
else //大於父結點
parent->right=p; //新增到右子樹
}//定義函式createbst(),將陣列中的資料全部插入到二叉排序樹中。
void createbst(bstree *t,int data,int n) //n個資料在陣列d中,tree為二叉排序樹根
return ;
}//刪除結點
void bst_delete(bstree *t,int key)
else if(child==0) //父結點為左子樹
else
}else if(!p->left) //左子樹為空,右子樹不為空
else if(!p->right) //右子樹為空,左子樹不為空
else //左右子樹都不為空
p->data=l->data; //將左子樹的資料儲存到被刪除的結點
ll->left=null; //設定父結點的左子樹指標為空
free(ll); //釋放左子樹佔的記憶體空間
}p=null;
} else if(keydata) //需刪除記錄的關鍵字小於結點的關鍵字
else //需刪除記錄的關鍵字大於結點的關鍵字 }
}bstree *searchbst(bstree *t,int key)
int main()
基於樹的查詢
二叉排序樹 建立二叉樹,並將資料插入到結點中。程式執行後會將原資料進行從小到大排序,並輸出排序結果 定義陣列source,並設定陣列裡面的資料。然後定義函式insertbst 用於在二叉樹排序插入關鍵字key。首先查詢要插入資料的父結點,然後根據插入資料的key于父結點值的大小,決定將結點插入到父結...
基於二叉查詢樹的集合
我們都知道dictionary查詢元素非常快,其實現原理是 將你tkey的值雜湊到陣列的指定位置,將tvalue的值存入對應的位置,由於取和存用的是同乙個演算法,所以就很容易定位到tvalue的位置,花費的時間基本上就是實現雜湊演算法的時間,跟其中元素的個數沒有關係,故取值的時間複雜度為o 1 集合...
基於二叉查詢樹的符號表
1.資料表示 我們巢狀定義乙個私有node類來表示二叉查詢樹上的乙個結點。每個結點都含有乙個鍵,乙個值,一條左鏈結,一條右鏈結。左鏈結指向一棵由小於該結點的所有鍵組成的二叉查詢樹,右鏈結指向一棵由大於該結點的所有鍵組成的二叉查詢樹。變數n給出以該結點為根的子樹的結點總數。這樣有 size x siz...