C语言创建二叉树

//C语言实现创建二叉树 


#include<stdio.h>
#include<stdlib.h>
typedef int DataType;

typedef struct Node{
	DataType Data;
	struct Node *lchild, *rchild;
}BinTNode, *BiTree;

void Create_BinTree(BiTree *T)
{
	char ch;
	
	scanf("%c",&ch);
	if(ch=='#')
	{
		*T==NULL;
	//	return; 
	} 
	else
	{
		*T=(BinTNode*)malloc(sizeof(BinTNode)); 
		(*T)->Data=ch;
		printf("\n建立左子树\n");
		(*T)->lchild=NULL; 
		(*T)->rchild=NULL;
		Create_BinTree(  &((*T)->lchild ) );//建立左子树 
		printf("\n建立右子树\n");
		Create_BinTree(  &((*T)->rchild ) );//建立右子树 
	}
	return ;
}

void DestroyBitTree(BiTree *T)//销毁二叉树 
{
	if(*T)
	{
		if((*T)->lchild)
			DestroyBitTree(  &((*T)->lchild ) );
		if((*T)->rchild)
			DestroyBitTree(  &((*T)->rchild)  );
	
	free(*T);
	*T=NULL; 
	}
	
	printf("\n销毁成功!\n");
	return;
}


//遍历二叉树
void PreOrder_Traverase(BiTree T)//先序遍历 
{
	if(T==NULL)
	return;
	else
	{
		printf(" %c " , T->Data);
		PreOrder_Traverase(T->lchild);
		PreOrder_Traverase(T->rchild);
	}
	
} 
 
void InOrder_Traverase(BiTree T)//中序遍历 
{
	if(T==NULL)
	return;
	else
	{
		PreOrder_Traverase(T->lchild);
		printf(" %c " , T->Data);
		PreOrder_Traverase(T->rchild);	
	} 
	
}
 
void PostOrder_Traverase(BiTree T)//后序遍历 
{
	if(T==NULL)
	return ;
	else
	{
		PreOrder_Traverase(T->lchild);
		PreOrder_Traverase(T->rchild);	
		printf(" %c " , T->Data);
	}
} 


int main()
{
	BiTree Tree;
	Create_BinTree(&Tree);
	
	printf("\n先序遍历\n"); 
	PreOrder_Traverase(Tree);
	printf("\n中序遍历\n");
	InOrder_Traverase(Tree);
	printf("\n后序遍历\n");
	PostOrder_Traverase(Tree);
	
	
	DestroyBitTree(&Tree);
	
	 
	return 0;
}

 

测试:

 

 

 

 

 

 

 

 

 

 

 

  • 17
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值