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

  • 0
  • 0
  • 约1.59千字
  • 约 4页
  • 2022-06-30 发布于上海
  • 举报

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

PAGE PAGE 3 实验二 二叉树的创建与访问算法的设计 一、目的 本实验的目的是通过理解二叉树的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。 二、题目 二叉树的创建与访问算法的设计三、实验类型 设计性。本实验设计了二叉树的创建与访问算法。四、要求及提示 说明:以下4个题中,任意选作一题。 1、【问题描述】 从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。 【基本要求】 实现以下基本操作: 从键盘输入二叉树的元素,建立二叉树。 实现二叉树的先序遍历算法。 2、【问题描述】 从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。 【基本要求】 实现以下基本操作: 从键盘输入二叉树的元素,建立二叉树。 实现二叉树的中序遍历算法。 3、【问题描述】 从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。 【基本要求】 实现以下基本操作: 从键盘输入二叉树的元素,建立二叉树。 实现二叉树的后序遍历算法。 4、【问题描述】 采用某种遍历方法查找二叉树中的结点值为 x(x 为从键盘输入的一个值)的结点,如果找到则返回其双亲结点值;否则返回值 0 【基本要求】 实现以下基本操作: 从键盘输入二叉树的元素,建立二叉树。 实现查找算法,并输出双亲结点值。 五、实验程序#includestdio.h #includestring.h #includestdlib.h #includemalloc.h typedef struct Node { char data; struct Node *lchild,*rchild; }JD; JD *Create(JD *t) { char s; scanf(%c,s); if(s==#) t=NULL; else { if(!(t=(JD *)malloc(sizeof(JD)))) printf(Error!); else { t-data=s; t-lchild=Create(t-lchild); t-rchild=Create(t-rchild); } } return t; } void inorder(JD *t) { if(t!=NULL) { inorder(t-lchild); printf(%c\t,t-data); inorder(t-rchild); } } void preorder(JD *t) { if(t!=NULL) { printf(%c\t,t-data); preorder(t-lchild); preorder(t-rchild); } } void afterorder(JD *t) { if(t!=NULL) { afterorder(t-lchild); afterorder(t-rchild); printf(%c\t,t-data); } } void main() { JD *t; t=NULL; printf(请以先序遍历依次为二叉树赋值:\n); t=Create(t); printf(以中序遍历输出:\n); inorder(t); printf(\n); printf(以先序遍历输出:\n); preorder(t); printf(\n); printf(以后序遍历输出:\n); afterorder(t); printf(\n); } 六、输出结果 七、实验心得 通过具体的上机操作实例,更加形象深刻地了解二叉树的相关特性, 掌握二叉树的存储结构、二叉树的遍历等。 1、 递归遍历更为简洁方便,而且不易出错。 2、在操作过程中,要注意细节方面的问题。 3、在编译的整个过程中,结点类型要一致。

文档评论(0)

1亿VIP精品文档

相关文档