10.4作业

main.c

#include "tree.h"

int main()
{
	treeptr T=create();//创建二叉树
	first_show(T);//先序遍历
	printf("\n");
	mid_show(T);//中序遍历
	printf("\n");
	last_show(T);//后序遍历
	printf("\n");
	freeTree(T);//销毁二叉树
}

tree.h

#ifndef __TREE_H__
#define __TREE_H__

#include <stdio.h>
#include <stdlib.h>

typedef char datatype;

typedef struct node
{
	datatype data;
	struct node *L;
	struct node *R;
}tree,*treeptr;

//创建二叉树
treeptr create();
//先序遍历
void first_show(treeptr T);
//中序遍历
void mid_show(treeptr T);
//后序遍历
void last_show(treeptr T);
//销毁二叉树
void freeTree(treeptr T);

#endif

tree.c

#include "tree.h"

//创建二叉树
treeptr create()
{
	datatype e;
	scanf("%c",&e);
	if(e=='#')
		return NULL;
	treeptr T=(treeptr)malloc(sizeof(tree));
	if(T==NULL)
		return NULL;
	T->data=e;
	T->L=create();
	T->R=create();
	return T;
}
//先序遍历
void first_show(treeptr T)
{
	if(T==NULL)
		return;
	printf("%c ",T->data);
	first_show(T->L);
	first_show(T->R);
}
//中序遍历
void mid_show(treeptr T)
{
	if(T==NULL)
		return;
	mid_show(T->L);
	printf("%c ",T->data);
	mid_show(T->R);
}
//后序遍历
void last_show(treeptr T)
{
	if(T==NULL)
		return;
	last_show(T->L);
	last_show(T->R);
	printf("%c ",T->data);
}
//销毁二叉树
void freeTree(treeptr T)
{
    if (T == NULL) 
        return;
    //销毁左子树
    freeTree(T->L);
    //销毁右子树
    freeTree(T->R);
    free(T);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值