头文件 sqTree.h
#ifndef _SQTREE_H
#define _SQTREE_H
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
typedef struct SqTree
{
char data[MAX];
int length;
}SqTree,*PSqTree;
PSqTree sqTree_Create();//创建
void sqTree_Init(PSqTree root,int pos);//初始化,pos为0
int sqTree_Level(PSqTree root);//层次遍历(直接打印)
void sqTree_First(PSqTree root,int pos);//先序遍历,pos为0
void sqTree_Middle(PSqTree root,int pos);//中序遍历,pos为0
void sqTree_Behind(PSqTree root,int pos);//后序遍历,pos为0
#endif
实现文件sqTree.c
#include "sqTree.h"
PSqTree sqTree_Create()//创建
{
PSqTree root = (PSqTree)malloc(sizeof(SqTree));
if(root==NULL)
{
perror("Create fail");
return NULL;
}
root->length=0;
return root;
}
void sqTree_Init(PSqTree root,int pos)//初始化,pos为0
{
if(root==NULL)
{
perror("SqTree is NULL");
return NULL;
}
char ch;
sacnf("%c",&ch);
if(ch=='#')
{
return;
}
root->data[pos]=ch;
root->length=pos;
sqTree_Init(root,pos*2);
sqTree_Init(root,pos*2+1);
return;
}
int sqTree_Level(PSqTree root)//层次遍历(直接打印)
{
if(root==NULL)
{
perror("SqTree is NULL");
return -1;
}
for(int i=0;i<root->length;i++)
{
printf("%d:%c ",i,root->data[i]);
}
return 1;
}
void sqTree_First(PSqTree root,int pos)//先序遍历,pos为0
{
if(root==NULL)
{
perror("SqTree is NULL");
return;
}
if(root->data[pos]=='#')
{
return;
}
printf("%c ",root->data[pos]);
sqTree_First(root,pos*2);
sqTree_First(root,pos*2+1);
return;
}
void sqTree_Middle(PSqTree root,int pos)//中序遍历,pos为0
{
if(root==NULL)
{
perror("SqTree is NULL");
return;
}
if(root->data[pos]=='#')
{
return;
}
sqTree_Middle(root,pos*2);
printf("%c ",root->data[pos]);
sqTree_Middle(root,pos*2+1);
return;
}
void sqTree_Behind(PSqTree root,int pos)//后序遍历,pos为0
{
if(root==NULL)
{
perror("SqTree is NULL");
return;
}
if(root->data[pos]=='#')
{
return;
}
sqTree_Behind(root,pos*2);
sqTree_Behind(root,pos*2+1);
printf("%c ",root->data[pos]);
return;
}
若有错误欢迎指正(*^▽^*)