Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2348922
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:08:55

#include
#include
typedef struct bitnode{
char date;
struct bitnode *lchild,*rchild;
}bitnode, *bitree;
//建立二叉树
void createbitree(bitree &t)
{char ch;
 scanf("%c",&ch);
 if(ch==' ') t=NULL;
 else {t=(bitnode*)malloc(sizeof(bitnode));
       t->date=ch;
       createbitree(t->lchild);
       createbitree(t->rchild);
 }
}
//二叉树的先根遍历
void preorder(bitree t)
{if (t!=NULL){
              preorder(t->lchild);
              preorder(t->rchild);
  printf("%c",t->date);
}


}
//先根遍历的非递归先根遍历
void preorder2(bitree t)
{bitree s[100],p=t;
 int    top=0;
 if(p){s[top++]=p;

       while(top!=0)
   {--top;
    p=s[top];
printf("%c",p->date);
if(p->rchild)
s[top++]=p->rchild;
if(p->lchild)
s[top++]=p->lchild;
   }
 }
}
void main()
{bitree t;
 char a;
 createbitree(t); getchar();
 printf("想用递归遍历?(y/n)");
 scanf("%c",&a);
 printf("%c\n",a);
 if(a=='y') {preorder(t); printf("此为递归。");}
 else
 {preorder2(t);
 printf("此为非递归遍历。");}
}


--------------------next---------------------

阅读(1558) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~