【数据结构】——求二叉树某结点在先序、中序、后序遍历中的访问次序

题目要求

        设二叉树采用二叉链表存储结构,结点数据域为字符类型。编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构。然后输入一个字符,输出该字符在先、中、后序遍历中的访问次序(访问次序从1开始)以及先、中、后序遍历结果。若输入的字符不在二叉树中,输出相应提示信息。要求程序可以反复输入字符并输出访问次序及遍历结果,直到输入某个特殊字符时结束程序。注意:输入单个字符时需对其后的换行符进行处理。

数据结构设计

        用结构体建立二叉树的二叉链表结构。其中,data表示数据域,lchild表示左指针,rchild表示右指针,BiT表示二叉链表结构体指针类型变量,BiTNode表示二叉链表结构体类型变量。

算法设计简要描述

        1. 先序遍历建立二叉树:递归调用函数,不断读取字符,依次建立左子树和右子树,当读取到‘#’字符时,返回NULL指针,最终返回根结点指针。

        2. 查询字符是否在二叉树中:在while循环中,反复输入字符,依次输出先序、中序、后序遍历结果,并判断该字符是否在二叉树中。

程序代码

#include <iostream>
using namespace std;
typedef struct node						        //二叉链表
{
	ElemTp data;						        //数据域
	struct node *lchild,						//左指针
		*rchild;					        //右指针
}*BiT, BiTNode;
void visit(BiT e)					    	        //访问函数		
{
	if (e->data != NULL)						//输出二叉树的数据域
		cout << e->data << "  ";
}
void preorder(BiT bt)							//先序遍历二叉树
{
	if (bt)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值