遍历二叉树(递归+非递归)实验报告.pdfVIP

  • 91
  • 0
  • 约5.37千字
  • 约 7页
  • 2021-09-07 发布于重庆
  • 举报
实验报告 课程名称 数据结构 实验名称 二叉树的遍历 日期 2013/05/30 学生学号 B 姓名 枯天蝎 班级 B110502 实验目的: 掌握二叉树的结构特征,掌握用指针类型描述、遍历二叉树的运算。 实验条件: 电脑一台 Vc++ 实验内容与算法思想: 内容: P213 实习题 1 建立一棵用二叉链表方式存储的二叉树,并对其进行遍历(先序、中序、 和后序) ,打印输出遍历结果。基本要求如下: 从键盘接受输入线序序列,以二叉链表作为存储结构,建立二叉树(以先 序来建立)并对其进行遍历(先序、中序、后序) ,然后将遍历结果打印输出。 要求采用递归和非递归两种方法实现。 算法思想: 定义二叉树结构体类型时,也定义了一个顺序栈结构体类型,用以辅助完 成二叉树的非递归遍历。 由键盘输入二叉树先序序列,用扩展线序序列函数接受并创建二叉链表。 遍历前先判断二叉树是否为空,若为空,执行空操作;否则依次执行各遍 历函数相应操作。 先序遍历算法思想,先访问根节点,然后按先序遍历左子树,再按先序遍 历右子树。 中序遍历算法思想,先按中序遍历左子树,再访问根节点,然后按中序访 问右子树。 后序遍历算法思想,先按后序遍历左子树,接着按中序遍历右子树,然后 访问根节点。 运行结果: 递归算法: 非递归算法: 实验总结(结论或问题分析) : 通过实验,加深了对 C 语言尤其是函数调用部分的认识和掌握。 没有找到在实验运行结果上明确区分递归算法实现的遍历和非递归算法实 现的遍历的方法。 实验成绩 任课教师签名 张红霞 附:源程序: 递归算法程序 #include #include #include #define maxsize 100 #define FALSE 0 #define TRUE 1 typedef struct node *bt=NULL; else { *bt=(bitree)malloc(sizeof(bitnode)); (*bt)-data=ch; cteatebitree(((*bt)-lchild)); cteatebitree(((*bt)-rchild)); } } /* 先序递归遍历 */ void preorder(bitree root) { if(root!=NULL) { printf(%c ,root-data); preorder(root-lchild); preorder(root-rchild); } } /* 中序递归遍历 */ void inorder(bitree root) { if(root!=NULL) { preorder(root-lchild);

文档评论(0)

1亿VIP精品文档

相关文档