学习记录(4.22-4.29)
数据结构
- 学习二叉树的顺序存储操作和链式存储操作
包括创建二叉树,先序中序后序排列输出。作业:查找元素并写出所在层数。
代码:
#include<stdlib.h>
//树的定义(结点定义)
typedef char DataType;
typedef struct Node {
DataType data;
struct Node *lchild;
struct Node *rchild;
} BiNode,*BiTree;
//创建树的二叉链表(递归)
void CreateBiTree(BiTree *bt)
{
char ch;
ch = getchar();
if(ch=='.') *bt=NULL;
else
{
*bt= (BiNode *)malloc(sizeof(BiNode));
(*bt)->data=ch;
CreateBiTree(&((*bt)->lchild)); //生成左子树
CreateBiTree(&((*bt)->rchild)); //生成右子树
}
}
//输出二叉树的元素(先序)
void Print(BiTree bt)
{
if(bt==NULL)
return;
else
{
printf("%c ", bt->data);
Print(bt->lchild);
Print(bt->rchild);
}
}
int where=1;
int reserch(char x,BiTree bt)
{
if (bt==NULL)return 0;
if(bt->data==x)return where;
where++;
if(reserch(x,bt->lchild)==0)where--;
else return where;
where++;
if(reserch(x,bt->rchild)==0)where--;
else return where;
return 0;
}
//主函数
void main()
{
BiTree T;
char r;
CreateBiTree(&T);
Print(T);
printf("
");
getchar();
scanf("%c",&r);
printf("%d",reserch(r,T));
}