• 大小: 5KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: C/C++
  • 标签:

资源简介

二叉排序树(C语言版的!)(1)二叉排序树存储定义 (2)从键盘上输入六个整数45、24、53、12、37、9构造二叉排序树 (3)输出其中序遍历结果。 (4)插入数据元素13,输出其中序遍历结果。 (5)删除数据元素24和53,输出其中序遍历结果。

资源截图

代码片段和文件信息

#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(“内存分配失败!“); 
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 < r->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; 


/* 查找结点 */ 
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); 


/* 插入结点 */ 
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); 



/* 删除结点 */ 
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) /* 后序遍历 */

评论

共有 条评论

相关资源