PTA 6-9 二叉树的遍历

本题要求给定二叉树的4种遍历。

函数接口定义:

void InorderTraversal( BinTree BT );
void PreorderTraversal( BinTree BT );
void PostorderTraversal( BinTree BT );
void LevelorderTraversal( BinTree BT );

其中BinTree结构定义如下:

typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
    ElementType Data;
    BinTree Left;
    BinTree Right;
};

要求4个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。

代码

void InorderTraversal( BinTree BT ) { // 中序
	if (!BT) return;
	InorderTraversal(BT->Left);
	printf(" %c", BT->Data);
	InorderTraversal(BT->Right);
}

void PreorderTraversal( BinTree BT ) { // 先序
	if (!BT) return;
	printf(" %c", BT->Data);
	PreorderTraversal(BT->Left);
	PreorderTraversal(BT->Right);
}

void PostorderTraversal( BinTree BT ) { // 后序
	if (!BT) return;
	PostorderTraversal(BT->Left);
	PostorderTraversal(BT->Right);
	printf(" %c", BT->Data);
}

void LevelorderTraversal( BinTree BT ) { // 层序
	if (!BT) return;
	BinTree que[1000];
	int front = -1, rear = -1;
	que[++rear] = BT;
	BinTree node;
	while (front < rear) {
		node = que[++front];
		printf(" %c", node->Data);
		if (node->Left) {
			que[++rear] = node->Left;
		}
		if (node->Right) {
			que[++rear] = node->Right;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值