二叉树链表的创建和遍历
二叉树链表的创建和遍历,防止忘记,自己学习用。
代码直接可用。
代码如下
#include<stdio.h>
#include<stdlib.h>
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//创建二叉链表
BiTree Create_BiTree(BiTree &bt){
char ch;
scanf("%c",&ch);
if(ch=='#') bt=NULL;
else{
bt=(BiTNode *)malloc(sizeof(BiTNode));
bt->data=ch;
Create_BiTree(bt->lchild);
Create_BiTree(bt->rchild);
}
return bt;
}
//先序遍历
void preorder(BiTree bt){
if(bt){
printf("%c",bt->data);
preorder(bt->lchild);
preorder(bt->rchild);
}
}
//中序遍历
void inorder(BiTree bt){
if(bt){
preorder(bt->lchild);
printf("%c",bt->data);
preorder(bt->rchild);
}
}
//后序遍历
void postorder(BiTree bt){
if(bt){
preorder(bt->lchild);
preorder(bt->rchild);
printf("%c",bt->data);
}
}
void CMD_select(){
printf("\n**************二叉链表的建立及遍历******************");
printf("\n1::二叉链表的前序遍历,2:二叉链表的中序遍历,3:二叉链表的后序遍历,4退出程序\n");
printf("请输入数字:");
}
int main(){
int n,cmd;
BiTree bt;
printf("请输入对应字符串:");
bt=Create_BiTree(bt);
printf("二叉链表建立成功!!!");
CMD_select();
scanf("%d",&cmd);
while(cmd!=4){
switch(cmd){
case 1://先序遍历
printf("序遍历结果:");
preorder(bt);
CMD_select();
scanf("%d",&cmd);
break;
case 2://中序遍历
printf("中序遍历结果:");
inorder(bt);
CMD_select();
scanf("%d",&cmd);
break;
case 3://后序遍历
printf("后序遍历结果:");
postorder(bt);
CMD_select();
scanf("%d",&cmd);
break;
default:printf("命令输入错误");
}
}
return 0;
}