二叉树的构造与遍历方法

该博客介绍了如何使用先序遍历构建二叉树,并详细探讨了二叉树的性质、存储结构。实验内容包括根据先序遍历输入构造二叉树,然后通过前序、中序、后序三种遍历方式进行遍历。实验旨在帮助读者熟悉二叉树的相关概念和操作。
摘要由CSDN通过智能技术生成

实验三:二叉树的构造与遍历方法

一、实验内容:用先序次序的方法构造一颗二叉树,并以三种遍历方式遍历次二叉树。

二、实验目的:通过实验能熟练掌握二叉树的定义、性质和存储结构;二叉树的遍历和线索化及遍历算法的各种描述形式。

三、实验代码:

代码:(递归遍历)
#include <stdio.h>
#include <stdlib.h>
#define ERROR 0
#define OK 1
#define OVERFLOW -2
typedef int Status;
typedef char TElemType;

typedef struct BiTNode{
	TElemType data;
	struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

Status CreateBiTree_PreOrder(BiTree &T){
	TElemType ch;
	scanf("%c",&ch);
	if(ch==' ') T=NULL;
	else{
		if(!(T=(BiTNode*)malloc(sizeof(BiTNode)))) exit(OVERFLOW);
		T->data=ch;
		CreateBiTree_PreOrder(T->lchild);
		CreateBiTree_PreOrder(T->rchild);
	}
	return OK;
}

Status PreOrderTraverse(BiTree T,Status(*visit)(TElemType e)){
	if(T){
		if((*visit)(T->data))
			if(PreOrderTraverse(T->lchild,visit))
				if(PreOrderTraverse(T->rchild,visit))
					return OK;
				return ERROR;
	}
	return OK;
}

Status InOrderTraverse(BiTree T,Status(*visit)(TElemType e)){
	if(T!=NULL){
		if(InOrderTraverse(T->lchild,visit))
			if((*visit)(T->data))
				if(InOrderTraverse(T->rchild,visit))
					return OK;
				return ERROR;
	}
	else return OK
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值