百度首页 | 百度空间
 
查看文章
 
按先序遍历创建二叉树并按先序,中序及后序遍历输出
2006-12-11 08:42

#include "stdio.h"
#include "malloc.h"
typedef struct bitnode
{
 int data;
 struct bitnode *lchild;
 struct bitnode *rchild;
}bitnode,*bitree;

void create(bitree *t)
{ int e;
   scanf("%d",&e);
  if(e==0)
   *t=NULL;
  else{
 *t=(bitree)malloc(sizeof(bitnode));
 if(!(*t))
  return ;
 (*t)->data=e;
 create(&((*t)->lchild));
 create(&((*t)->rchild));
  }
}
void preorder(bitree t)
{
 if(t==NULL)
  return ;
 else
 {printf("%5d",t->data);
  preorder(t->lchild);
  preorder(t->rchild);
 }
}
void inorder(bitree t)
{ if(t==NULL)
  return ;
  else
  {inorder(t->lchild);
  printf("%5d",t->data);
   inorder(t->rchild);
  }
}
void postorder(bitree t)
{ if(t==NULL)
  return ;
 else
  {postorder(t->lchild);
   postorder(t->rchild);
   printf("%5d",t->data);
  }
}
void main()
{
 bitree t;
     t=NULL;
 create(&t);
 preorder(t);     //先序输出
 printf("\n\n");
 inorder(t);       //中序输出
 printf("\n\n");
 postorder(t);   //后序输出
 printf("\n");
}

注意:此二叉树的创建在输入节点时,必须要按所要创建二叉树的先序遍历输入,如果某棵子树的左孩子,右孩子或者左右孩子为空时,在输入时必须要用"0"代替,否则程序无法得到所要的结果.

此程序在创建和序遍历输出时均用到了递归.


类别:学习码 | 添加到搜藏 | 浏览() | 评论 (3)
 
最近读者:
 
网友评论:
1
2007-06-11 18:20
怎么不显示结果啊??
 
2
2007-06-12 15:40
看看代码下面的主要事项就知道了
 
3
2007-06-18 21:11
这是你写的么?
太强了
佩服佩服
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu