[2018年最新整理]实验六 二叉树的遍历.docVIP

  • 30
  • 0
  • 约7.5千字
  • 约 9页
  • 2018-04-15 发布于浙江
  • 举报

[2018年最新整理]实验六 二叉树的遍历.doc

[2018年最新整理]实验六 二叉树的遍历

实验六 二叉树的遍历操作 1.实验内容 (1)先序遍历操作:①访问根结点②先序遍历左子树③先序遍历右子树;包括递归算法和非递归算法。 (2)中序遍历操作:①中序遍历左子树②访问根结点③中序遍历右子树;包括递归算法和非递归算法。 (3)后序遍历操作:①后序遍历左子树②后序遍历右子树③访问根结点;包括递归算法和非递归算法。 2.实现的步骤 (1)实现将链式队列的遍历操作程序代码。 (2)实现main主函数。 3.程序代码完整清单 #include stdio.h #include malloc.h #define MaxSize 100 typedef char ElemType; typedef struct node { ElemType data; /*数据元素*/ struct node *lchild; /*指向左孩子*/ struct node *rchild; /*指向右孩子*/ } BTNode; //基本操作函数声明 void CreateBTNode(BTNode *b,char *str); /*创建一棵二叉树*/ void DispBTNode(BTNode *b); /*输出二叉树*/ void PreOrder(BTNode *b); /*先序遍历的递归算法*/ void PreOrder1(BTNode *b); /*先序遍历的非递归算法1*/ void PreOrder2(BTNode *b); /*先序遍历的非递归算法2*/ void InOrder(BTNode *b); /*中序遍历的递归算法*/ void InOrder1(BTNode *b); /*中序遍历的非递归算法1*/ void InOrder2(BTNode *b); /*中序遍历的非递归算法2*/ void PostOrder(BTNode *b); /*后序遍历的递归算法*/ void PostOrder1(BTNode *b); /*后序遍历的非递归算法1*/ void PostOrder2(BTNode *b); /*后序遍历的非递归算法2*/ void TravLevel(BTNode *b); /*输出二叉树*/ void main() { BTNode *b; CreateBTNode(b,A(B(D,E(H(J,K(L,M(,N))))),C(F,G(,I)))); printf( 二叉树b:);DispBTNode(b);printf(\n\n); printf( 层次遍历序列:); TravLevel(b); printf(\n); printf( 先序遍历序列:\n); printf( 递归算法:);PreOrder(b);printf(\n); printf( 非递归算法1:);PreOrder1(b);printf(\n); printf( 非递归算法2:);PreOrder2(b);printf(\n); printf( 中序遍历序列:\n); printf( 递归算法:);InOrder(b);printf(\n); printf( 非递归算法1:);InOrder1(b);printf(\n); printf( 非递归算法2:);InOrder2(b);printf(\n); printf( 后序遍历序列:\n); printf( 递归算法:);PostOrder(b);printf(\n); printf( 非递归算法1:);PostOrder1(b);printf(\n); printf( 非递归算法2:);PostOrder2(b);printf(\n); } void PreOrder(BTNode *b) /*先序遍历的递归算法*/ { if (b!=NULL) { printf(%c ,b-data); /*访问根结点*/ PreOrder(b-lchild); /*递归访问左子树*/ PreOrder(b-rchild); /*递归访问右子树*/ } } void PreOrder1(BTNode *b) /*先序遍历的非递归算法1*/ { BTNode *p; struct { BTNode *pt; int tag; } St[MaxSize]; int top=-1; top++; St[top].pt=b;St[top].tag=1; while (top-1) /*栈不空时循

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档