我们学习树主要主要需要掌握三序遍历。
直接上代码。
头文件:
#ifndef __TREE_H
#define __TREE_H
#include <stdio.h>
#include <stdlib.h>
typedef char datatype;
typedef struct Tree
{
datatype data;
struct Tree *lchild;
struct Tree *rchild;
}tree,*ptree;
extern ptree init(void);
extern void first(ptree p);
extern void mid(ptree p);
extern void last(ptree p);
#endif
主函数:
#include "tree.h"
int main()
{
ptree p = init();
if(p==NULL)
{
return -1;
}
first(p);
printf("\n");
mid( p);
printf("\n");
last( p);
printf("\n");
return 0;
}
函数:
#include "tree.h"
//对树进行初始化
ptree init(void)
{
char c;
scanf("%c",&c);
if(c=='#')
{
return NULL;
}
ptree p=(ptree)malloc(sizeof(tree));
if(p==NULL)
{
perror("malloc errnor");
return NULL;
}
p->data=c;
p->lchild=init();
p->rchild=init();
return p;
}
//先序遍历
void first(ptree p)
{
if(p!=NULL)
{
printf("%c",p->data);
first(p->lchild);
first(p->rchild);
}
}
//中序遍历
void mid(ptree p)
{
if(p!=NULL)
{
mid(p->lchild);
printf("%c",p->data);
mid(p->rchild);
}
}
//后序遍历
void last(ptree p)
{
if(p!=NULL)
{
last(p->lchild);
last(p->rchild);
printf("%c",p->data);
}
}
对于树而言我们主要掌握三序遍历,需要知道建立树的主要思想是依靠递归思想。