实验题目: 二叉树的存储及基本操作
一、实验目的
1、掌握二叉树的二叉链表存储实现;
2、掌握在二叉链表上的基本操作;
3、掌握二叉排序树的二叉链表存储实现;
4、掌握二叉排序树的在二叉链表上的基本操作。
二、实验作业
在给出部分代码的基础上完成:
1、已知,二叉树中的元素是整型的,在给出部分参考代码的基础上完成:
在二叉链表存储体上实现二叉树的存储后,编写程序完成输出该二叉中大于x,小于y的结点元素及存储结点的地址,将编写好的函数在主函数的调用。
void countBitree( node* t,int x,int y)
2、某整型元素构成的二叉排序树,采用二叉链表方式进行了存储,请编写程序完成在该链表进行输出大于x,小于y的元素个数及相应的元素的函数,将编写好的函数在主函数的调用。
void outsum ( node* t,int x,int y)
3、对该二叉排序树中的节点进行从大到小的输出
void out ( node* t)
三、实验内容
1、
//#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
typedef struct node
{ int data;
struct node *lchild,*rchild;
}node;
/*一棵二叉树*/
node* CreatBT()
{ node* t;
int c;
scanf("%d",&c);
if(c==1)
return NULL;
else
{ t=(node*)malloc(sizeof(node));
t->data=c;
t->lchild=CreatBT();
t->rchild=CreatBT();
return t;
}
}
/*前序遍历二叉树*/
void PreorderBT(node* t)
{ if(t!=NULL)
{ printf("%d",t->data);
PreorderBT(t->lchild);
PreorderBT(t->rchild);
}
}
/*中序遍历二叉树*/
void midorderBT(node* t)
{ if(t!=NULL)
{
midorderBT(t->lchild);
printf("%d",t->data);
midorderBT(t->rchild);
}
}
/*后序遍历二叉树*/
void backorderBT(node* t)
{ if(t!=NULL)
{ backorderBT(t->lchild);
backorderBT(t->rchild);
printf("%d",t->data);
}
}
/*求解二叉树高度的程序*/
int lengthBT(node* t)
{ int t1,t2;
if(t==NULL)
return 0;
else
{ t1=lengthBT(t->lchild);
t2=lengthBT(t->rchild);
if(t1>=t2)
return (t1+1);
else
return (t2+1);
}
}
/*求解二叉树叶子结点个数的程序*/
int sumyeBT(node* t)
{ int t1,t2;
if(t==NULL)
return 0;
else
{ if(t->lchild==NULL&&t->rchild==NULL)
return 1;
else
{ t1=sumyeBT(t->lchild);
t2=sumyeBT(t->rchild);
return (t1+t2);
}
}
}
/*求解二叉树结点数目的程序*/
int sumBT(node* t)
{ int t1,t2;
if(t==NULL)
return 0;
else
{ t1=sumBT(t->lchild);
t2=sumBT(t->rchild);
return (t1+t2+1);
}
}
void main()
{ node* t;int x,y,a;
t=CreatBT();
printf("Preorder: ");
PreorderBT(t);
printf("\n");
printf("mideorder: ");
midorderBT(t);
printf("\n");
printf("backeorder: ");
backorderBT(t);
printf("\n");
printf("er cha shu de gaoduo: ");
x=lengthBT(t);
printf("%d",x);
printf("\n");
printf("er cha shu de ye zi ge shu: ");
y=sumyeBT(t);
printf("%d",y);
printf("\n");
printf("er cha shu de jie diao shu mu: ");
a=sumBT(t);
printf("%d",a);
}
四、实验结果
(实验结果截图)
五、实验心得
(心得体会,书写要详细、具体,包括问题及解决办法或者方法)