实验二 - - 二叉树的创建与访问算法的设计2

更新时间:2024-03-09 15:36:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验二二叉树的创建与访问算法的设计

一、目的

本实验的目的是通过理解二叉树的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。 二、题目

二叉树的创建与访问算法的设计 三、实验类型

设计性。本实验设计了二叉树的创建与访问算法。 四、要求及提示

说明:以下4个题中,任意选作一题。 1、【问题描述】

从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。 【基本要求】

实现以下基本操作:

(1) 从键盘输入二叉树的元素,建立二叉树。 (2) 实现二叉树的先序遍历算法。

2、【问题描述】

从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。 【基本要求】

实现以下基本操作:

(1) 从键盘输入二叉树的元素,建立二叉树。 (2) 实现二叉树的中序遍历算法。 3、【问题描述】

从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。 【基本要求】

实现以下基本操作:

(1) 从键盘输入二叉树的元素,建立二叉树。 (2) 实现二叉树的后序遍历算法。 4、【问题描述】

采用某种遍历方法查找二叉树中的结点值为x(x为从键盘输入的一个值)的结点,如果找到则返回其双亲结点值;否则返回值0 【基本要求】

实现以下基本操作:

(1) 从键盘输入二叉树的元素,建立二叉树。 (2) 实现查找算法,并输出双亲结点值。

1

五、实验程序

#include #include #include #include

typedefstruct Node {

char data;

struct Node *lchild,*rchild; }JD;

JD *Create(JD *t) {

char s;

scanf(\if(s=='#')

t=NULL; else {

if(!(t=(JD *)malloc(sizeof(JD)))) printf(\ else {

t->data=s;

t->lchild=Create(t->lchild); t->rchild=Create(t->rchild); } }

return t; }

voidinorder(JD *t) {

if(t!=NULL) {

inorder(t->lchild); printf(\inorder(t->rchild); } }

void preorder(JD *t) {

if(t!=NULL) {

2

printf(\preorder(t->lchild); preorder(t->rchild); } }

voidafterorder(JD *t) {

if(t!=NULL) {

afterorder(t->lchild); afterorder(t->rchild);

printf(\ } }

void main() {

JD *t; t=NULL;

printf(\请以先序遍历依次为二叉树赋值:\\n\ t=Create(t);

printf(\以中序遍历输出:\\n\inorder(t);

printf(\

printf(\以先序遍历输出:\\n\ preorder(t); printf(\

printf(\以后序遍历输出:\\n\ afterorder(t); printf(\ }

3

六、输出结果

七、实验心得

通过具体的上机操作实例,更加形象深刻地了解二叉树的相关特性,掌握二叉树的存储结构、二叉树的遍历等。

1、 递归遍历更为简洁方便,而且不易出错。

2、 在操作过程中,要注意细节方面的问题。 3、 在编译的整个过程中,结点类型要一致。

4

本文来源:https://www.bwwdw.com/article/aiua.html

Top