二叉排序樹的各項操作
#include
#include
#define
max20
typedef int datatype;
typedef struct bi_search_tree
*bst_tree;
/*插入操作,value是待插入的值*/
bst_tree bst_insert(bst_tree root, datatype value)
parent
= root; /*記錄下根節點的位置*/
node = root;
while(node !=
null)
}child = (bst_tree )malloc(sizeof(bst_tree));
child->key = value;
child->left =
null;
child->right =
null;
if(value >
parent
->key)
parent
->right = child;
else
parent
->left = child;
return root;
}/*查詢,找到返回1,否則,返回0*/
int bst_search(bst_tree root, datatype value)
/*刪除節點值為value的節點*/
int bst_delete(bst_tree root, datatype value)
else
p = p->left;
}if(p ==
null)
return
0; /*至少有乙個子節點為空*/
if( (p->left ==
null) || (p->right ==
null) )
else
pre->right = ( (p->left ==
null) ? p->right : p->left );
free(p); /*釋放節點*/
}else
/*移花接木,直接賦值,避免交換節點*/
p->key = mid->key;
/*將mid節點的子節點作為pre的子節點,並將mid所指向的節點刪除*/
if(pre->right == mid)
pre->right = mid->right;
else
pre->left = mid->right;
free(mid);
}return1;}
/*中序輸出bst樹*/
void bst_print(bst_tree root)
int main()
bst_delete(root, 5);
bst_print(root);
printf("\n%d %s\n", root->key, bst_search(root, 10) ? "yes":"no");
return 0;
}
用於儲存**,同時希望對廣大博友有用 二叉排序樹的操作
二叉排序樹的建立,中序遍歷,前序遍歷,後序遍歷,計算總結點數,計算樹的深度 二叉排序樹的建立 void creattree tree t,int m if melement creattree t lchild,m else creattree t rchild,m 前序遍歷 void preord...
二叉排序樹基本操作
1.儲存結構 二叉鍊錶 include include typedef struct bitnode bitnode,bitree 2.二叉排序樹查詢演算法 遞迴查詢二叉排序樹t中是否存在key status search bitree t,int key,bitree f,bitree p p指向...
二叉排序樹查詢操作
當函式返回值為函式結果狀態 時,函式定義為status型別。遞迴查詢二叉排序樹t中是否存在key 指標 f 指向 t 的雙親,其初始呼叫值為null 若查詢成功,則指標p指向該資料元素結點,並返回true includetypedef struct bitnode bitnode,bitree bo...