资源简介

数据结构二叉树实验源代码及运行文件,使用vc编写,内部包含 二叉树.cpp 二叉树.dsw 二叉树.dsp等 需要实验报告的童鞋可以到本人上传资源中找!

资源截图

代码片段和文件信息

//#include“stdafx.h“
#include
#include
#include  
#define OVERFLOW -2
#define MAX 100
#define maxsize 100

typedef struct bitnode
{
char data;
struct bitnode *lch*rch;
}bitnode*bitree;

typedef struct queuenode
{
    bitree ch[maxsize];
    int front;
    int rear;
}queuenode;

int m=0;

void creat(bitree &T)
// 创建二叉树
{
char ch;

scanf(“%c“&ch);
if(ch==‘*‘)
T=NULL;
else
{
T=(bitree)malloc(sizeof(bitnode));
if(T==NULL)
exit(OVERFLOW);
T->data=ch; 
creat(T->lch);
creat(T->rch);
}
}

void perorder (bitree T) 
//先序遍历    
{

    if (T) 
{
       printf(“%c “T->data);  
       perorder(T->lch);
       perorder(T->rch);
}
}


void incorder(bitree T)        
 //中序非递归遍历
{

bitree p;
int top;
bitree s[MAX];
bool boolean;
p=T;
top=0;
boolean=1;
do
{
while(p)
{
if((p->rch==NULL&&p->lch!=NULL)||(p->rch!=NULL&&p->lch==NULL))
m++;
s[top]=p;
top++;
p=p->lch;
}
if(top==0)
boolean=0;
else
{
top--;
p=s[top];
printf(“%c “p->data);
p=p->rch;
}
}while(boolean);
}

void postorder(bitree T)  
 //后序遍历
{  

if(T) 

postorder(T->lch);
postorder (T->rch);
    printf(“%c “T->data);
    }
}


void initqueue(queuenode &q)
//初始化一个带头结点的队列
{
q.front=q.rear=0;
}


int enqueue(queuenode &qbitree T)
//入队列
{
if((q.rear+1)%maxsize==q.front)
{
       printf(“队列满!!!\n“);
       return 0;
}
    q.ch[q.rear]=T;
    q.rear=(q.rear+1)%maxsize;
    return 1;
}


void dequeue(queuenode &qbitree &T)
//出队列
{
    T=q.ch[q.front];
    q.front=(q.front+1)%maxsize;
    char data;
    data=T->data;
    printf(“%c “data);



int queueempty(queuenode q)
//判断队列是否为空
{
    if(q.front==q.rear)
    return 1;
    return 0;
}


void traverse(bitree T)
//按层次遍历树中结点
{
queuenode q;
bitree p;
  initqueue(q);
  p=T;
  enqueue(qp);
  while(queueempty(q)!=1)
{     
        dequeue(qp);
        if(p->lch!=NULL)
        if(enqueue(qp->lch)==0)
       return;
        if(p->rch!=NULL)
        if(enqueue(qp->rch)==0)
       return;
}
    printf(“\n“);
}

int depth(bitree T)
//求树深
{
if(!T) return 0;
    int d1;
    d1= depth(T->lch);
    int d2;
    d2= depth(T->rch);
    return (d1>d2?d1:d2)+1;
}


void main()
{
char i;
bitree A;
printf(“先序遍历算法建立二叉树,请输入节点值(空用用*表示):\n“);

creat(A);
putchar(‘\n‘);
printf(“先序遍历:“);
perorder(A);
putchar(‘\n‘);
printf(“中序遍历:“);
incorder(A);
putchar(‘\n‘);
printf(“后序遍历:“);
postorder(A);
putchar(‘\n‘);
printf(“层次遍历:“);
traverse(A);
printf(“\n度为1的节点个数为:m=%d\n“m);
putchar(‘\n‘);
printf(“树的深度为:%d\n\n“depth(A));
printf(“是否再次进行二叉树操作(Y/N)?\n“);
scanf(“%s“&i);
if(i==‘Y‘)
main();
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      33792  2009-12-03 12:38  数据结构二叉树实验\Debug\vc60.idb

     文件      53248  2009-12-03 12:38  数据结构二叉树实验\Debug\vc60.pdb

     文件     184384  2009-12-03 12:38  数据结构二叉树实验\Debug\二叉树.exe

     文件     185492  2009-12-03 12:38  数据结构二叉树实验\Debug\二叉树.ilk

     文件      13114  2009-12-03 12:38  数据结构二叉树实验\Debug\二叉树.obj

     文件     222676  2009-12-03 12:38  数据结构二叉树实验\Debug\二叉树.pch

     文件     427008  2009-12-03 12:38  数据结构二叉树实验\Debug\二叉树.pdb

     文件       2985  2009-12-03 12:38  数据结构二叉树实验\二叉树.cpp

     文件       3403  2009-06-30 13:03  数据结构二叉树实验\二叉树.dsp

     文件        537  2009-06-30 14:07  数据结构二叉树实验\二叉树.dsw

     文件      50176  2009-12-03 12:43  数据结构二叉树实验\二叉树.ncb

     文件      48640  2009-12-03 12:43  数据结构二叉树实验\二叉树.opt

     文件        750  2009-12-03 12:38  数据结构二叉树实验\二叉树.plg

     目录          0  2009-12-03 12:38  数据结构二叉树实验\Debug

     目录          0  2009-12-07 09:29  数据结构二叉树实验

----------- ---------  ---------- -----  ----

              1226205                    15


评论

共有 条评论