二叉树的遍历

题目

【问题描述】采用先序遍历的顺序输入二叉树,度不为 2 的节点采用空格补全( - 代表空
格),再分别采用先序、中序和后序算法对该二叉树进行遍历。
【输入形式】 12-46---3-5--
【输出形式】
【样例输入】 12-46---3-5--
【样例输出】 124635
                       264135
                       642531

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

typedef struct BiTNode
{
	struct BiTNode *lchild,*rchild;
	char data;
	
 } BiTNode,*BiTree;
 
 void CreateB(BiTree *T)
 {
 	char ch;
 	ch=getchar();
 	if(ch=='-')
 	{
 		(*T)=NULL;
	 }
 		
 	else
 	{
 		(*T)=(BiTree)malloc(sizeof(BiTNode));
 		(*T)->data=ch;
 		CreateB(&(*T)->lchild);
 		CreateB(&(*T)->rchild);
	 }
 }
 
 void Preorder(BiTree T)
 {
 	if(T==NULL)
 	{
 		return;
	 }
 		
 	printf("%c",T->data);
 	Preorder(T->lchild);
 	Preorder(T->rchild);
 }
 void Inorder(BiTree T)
 {
 	if(T==NULL)
 	{
 		return;
	 }
 	
 	
 	Inorder(T->lchild);
	printf("%c",T->data);
 	Inorder(T->rchild);
 }
 
 void Postorder(BiTree T)
 {
 	if(T==NULL)
 		return;
 	Postorder(T->lchild);
 	Postorder(T->rchild);
	printf("%c",T->data);
 }
 
 int main()
 {
 	BiTree B;
 	CreateB(&B);
 	Preorder(B);
 	printf("\n");
 	Inorder(B);
 	printf("\n");
 	Postorder(B);
 	printf("\n");
 	
 	return 0;
 	
 	
 }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值