資源簡(jiǎn)介
二叉排序樹(C語言版的?。?)二叉排序樹存儲(chǔ)定義
(2)從鍵盤上輸入六個(gè)整數(shù)45、24、53、12、37、9構(gòu)造二叉排序樹
(3)輸出其中序遍歷結(jié)果。
(4)插入數(shù)據(jù)元素13,輸出其中序遍歷結(jié)果。
(5)刪除數(shù)據(jù)元素24和53,輸出其中序遍歷結(jié)果。
代碼片段和文件信息
#include??
#include??
#include??
struct?node?{?
int?value;?
struct?node*?left;?
struct?node*?right;?
};?
typedef?struct?node?NODE;?
typedef?struct?node*?PNODE;?
PNODE?creat(?PNODE?treePNODE?rint?value)?
{?
if(!r)?
{?
r?=?(PNODE)malloc(sizeof(NODE));?
if(!r)?
{?
printf(“內(nèi)存分配失敗!“);?
exit(0);?
}?
r->left?=?NULL;?
r->right?=?NULL;?
r->value?=?value;?
if(!tree)?
return?r;?
if(valuevalue)?
tree->left?=?r;?
else?
tree->right?=?r;?
return?r;?
}?
if(value?value)?
creat(rr->leftvalue);?
else?
creat(rr->rightvalue);?
return?tree;?
}?
void?new_node?(PNODE*?n?int?value)?{?
*n?=?(PNODE)malloc?(sizeof(NODE));?
if?(*n?!=?NULL)?{?
(*n)->value?=?value;?
(*n)->left?=?NULL;?
(*n)->right?=?NULL;?
}?
}?
void?free_node?(PNODE*?n)?{?
if?((*n)?!=?NULL)?{?
free?(*n);?
*n?=?NULL;?
}?
}?
/*?查找結(jié)點(diǎn)?*/?
PNODE?find_node?(PNODE?n?int?value)?{?
if?(n?==?NULL)?{?
return?NULL;?
}?else?if?(n->value?==?value)?{?
return?n;?
}?else?if?(value?<=?n->value)?{?
return?find_node?(n->left?value);?
}?else?{?
return?find_node?(n->right?value);?
}?
}?
/*?插入結(jié)點(diǎn)?*/?
void?insert_node?(PNODE*?n?int?value)?{?
if?(*n?==?NULL)?{?
new_node?(n?value);?
}?else?if?(value?==?(*n)->value)?{?
return;?
}?else?if?(value?(*n)->value)?{?
insert_node?(&((*n)->left)?value);?
}?else?{?
insert_node?(&((*n)->right)?value);?
}?
}?
/*?刪除結(jié)點(diǎn)?*/?
void?deletenode?(PNODE?*n)?{?
PNODE?tmp?=?NULL;?
if?(n?==?NULL)?return;?
if?((*n)->right?==?NULL)?{?
tmp?=?*n;?
*n?=?(*n)->left;?
free_node?(n);?
}?else?if?((*n)->left?==?NULL)?{?
tmp?=?*n;?
*n?=?(*n)->right;?
free_node?(n);?
}?else?{?
for?(tmp?=?(*n)->right;?tmp->left?!=?NULL;?tmp?=?tmp->left);?
tmp->left?=?(*n)->left;?
tmp?=?(*n);?
*n?=?(*n)->right;?
free_node?(&tmp);?
}?
}?
void?delete_node?(PNODE?*n?int?value)?{?
PNODE?node;?
if?(n?==?NULL)?return;?
node?=?find_node?(*n?value);?
if?((*n)->value?==?value)?{?
deletenode?(n);?
}?else?if?(value?(*n)->value)?{?
delete_node?(&((*n)->left)?value);?
}?else?{?
delete_node(&((*n)->right)?value);?
}?
}?
void?pre_order_traversal(PNODE?n)?/*?前序遍歷?*/
{?
if?(n?!=?NULL)?{?
printf?(“%i?“?n->value);?
pre_order_traversal?(n->left);?
pre_order_traversal(?n->right);?
}?
}?
void?in_order_traversal?(PNODE?n)?/*?中序遍歷?*/
{?
if?(n?!=?NULL)?{?
in_order_traversal?(n->left);?
printf?(“%i?“?n->value);?
in_order_traversal?(?n->right);?
}?
}?
void?post_order_traversal?(PNODE?n)?/*?后序遍歷?*/
{?
評(píng)論
共有 條評(píng)論