自学内容网 自学内容网

c语言二叉树的创建,三种遍历方式,销毁

二叉树的创建

typedef char datatype;
typedef struct Node
{
  datatype data;
  struct Node *left_child;
  struct Node *right_child;

}*Btree;
//二叉树的创建
Btree create_node()
{
  Btree t=(Btree)malloc(sizeof(struct Node));
  if(NULL==t)
    return NULL;
  t->data=0;
  t->left_child=t->right_child=NULL;
  return t;
}
//c语言模拟二叉树的建立
Btree create_tree()
{
   datatype element;
   printf("INPUT:");
   scanf(" %c",&element);
   if(element=='#')
      return NULL;
   Btree tree=create_node();
   tree->data=element;
   puts("LEFT");
   tree->left_child=create_tree();
   puts("RIGHT");
   tree->right_child=create_tree();
   return tree;
}

前序遍历

//二叉树的先序遍历  根左右
void frist_output(Btree tree)
{
    if(NULL==tree)
{
return ;
}
printf("%c",tree->data);
    frist_output(tree->left_child);
frist_output(tree->right_child);
}

中序遍历

//二叉树的中序遍历 左根右
void mid_output(Btree tree)
{
if(NULL==tree)
{
  return ;
}
mid_output(tree->left_child);
printf("%c",tree->data);
mid_output(tree->right_child);  
}

后序遍历

//二叉树的后序遍历 左右根
void last_output(Btree tree)
{
    if(NULL==tree)
{
  return;
}
last_output(tree->left_child);
last_output(tree->right_child);
printf("%c",tree->data);
}

销毁二叉树

//二叉树的销毁
void free_tree(Btree tree)
{
 if(NULL==tree)
 {
   return;
 }
 free_tree(tree->left_child);
 free_tree(tree->right_child);
 free(tree);
 tree=NULL;

}

效果展示


原文地址:https://blog.csdn.net/sadjjkj/article/details/136025411

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!