实验目的
- 通过实验掌握二叉树的基本存储结构;
- 掌握二叉树的建立与遍历的基本算法,并加以应用;
实验环境
CodeBlocks
实验要求
- 熟悉c语言的语法知识;
- 掌握二叉树的链式存储结构—二叉链表的定义、构造、遍历等基本操作;
实验内容
完成二叉树的二叉链表的存储结构的定义、创建、前序遍历、中序遍历、后序遍历、求叶子数和求深度等函数的编写。完成以下函数的编写:
(1) 编写一个函数输出结点的值。visit( BiTree T)
(2)编写一个函数,用递归算法求二叉树的结点总数,函数原型为:int node(BiTree T)。
(3)要求在主函数中实现对以上操作的调用,实现以下功能:
①定义一棵二叉树T,并调用创建函数创建一棵如下图所示的二叉树:
②分别输出二叉树的前序序列、中序序列和后序序列。
③分别输出二叉树的叶子结点数、深度和结点总数。
源代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 1024
typedef char ElemType; /*二叉链表的定义*/
typedef struct BiTreeNode
{
ElemType data;
struct BiTreeNode *lchild,*rchild;
}BiTreeNode, *BiTree;
BiTree CreateBiTree(char str[]) /*创建二叉树*/
{
BiTree bt;
char ch;
static int i=0;
ch=str[i++];
if(ch=='.')bt=NULL;
else
{
bt=(BiTree)