您的位置:逆风者 数据结构 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:19 来源:未知

教学目的: 掌握二叉树的链式存储结构

教学重点: 二叉树的链式存储实现方法

教学难点:

授课内容:

生成如下二叉树,并得出三种遍历结果:

逆@风@者

一、二叉树的链式存储结构表示

typedef struct BiTNode{

TElemType data;

struct BitNode *lchild,*rchild;

}BiTNode,*BiTree;

二、二叉树的链式存储算法实现

CreateBiTree(&T,definition);

InsertChild(T,p,LR,c);

三、二叉树的递归法遍历

PreOrderTraverse(T,Visit());

InOrderTraverse(T,Visit());

PostOrderTraverse(T,Visit());

示例源程序

#include <alloc.h>



#define ERROR 0;

#define OK 1;





typedef int ElemType;



typedef struct BinaryTree



{

  ElemType data;

  struct BinaryTree *l;

  struct BinaryTree *r;

}*BiTree,BiNode;



BiNode * new()

{

  return( (BiNode *)malloc(sizeof(BiNode)) );

}



CreateSubTree(BiTree *T,ElemType *all,int i)

{

  if ((all[i]==0)||i>16)

    {

      *T=NULL;

      return OK;

    }

  *T=new();

  if(*T==NULL) return ERROR;

  (*T)->data=all[i];

  CreateSubTree(&((*T)->l),all,2*i);

  CreateSubTree(&((*T)->r),all,2*i 1);

}



CreateBiTree(BiTree *T)

{

  ElemType all[16]={0,1,2,3,0,0,4,5,0,0,0,0,6,0,0,0,};

  CreateSubTree(T,all,1);

}



printelem(ElemType d)

{

  printf("%d\n",d);

}



PreOrderTraverse(BiTree T,int (*Visit)(ElemType d))

{

  if(T){

    if(Visit(T->data))

      if(PreOrderTraverse(T->l,Visit))

	if(PreOrderTraverse(T->r,Visit)) return OK;

    return ERROR;

  } else  return OK;

}

main()

{

  BiTree root;

  CreateBiTree(&root);

  PreOrderTraverse(root,printelem);



}

相关文章

数据结构教程 第十九课 实验四 串的实现实验
数据结构教程 第三十五课 实验七 查找
数据结构教程 第三课 算法及算法设计要求
数据结构教程 第九课 循环链表与双向链表
数据结构教程 第四课 算法效率的度量和存储
数据结构教程 第十三课 队列
数据结构教程 第二十九课 静态查找表(一)
C语言完成一个学生成绩管理程序
数据结构教程 第二十三课 二叉树的存储结构
数据结构教程 第十四课 串的定义
数据结构教程 第三十九课 索引文件
五子棋算法
数据结构教程 第一课 数据结构的基本概念和
数据结构教程 第三十三课 哈希表(二)

相关评论


本文章所属分类:首页 数据结构

  热门关键字: