二叉排序樹各項操作

2021-07-25 02:49:01 字數 1613 閱讀 5433

二叉排序樹的各項操作

#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...