设从键盘输入一个整数的序列:n,a1,a2,…,an,其中n表示连续输入整数的个数。 (1)试编写一程序按整数值建立一个二叉排序树。 (2)在(1)的基础上将此二叉树上的各整数按降序写入一磁盘文件中。

admin2017-11-14  40

问题 设从键盘输入一个整数的序列:n,a1,a2,…,an,其中n表示连续输入整数的个数。
    (1)试编写一程序按整数值建立一个二叉排序树。
    (2)在(1)的基础上将此二叉树上的各整数按降序写入一磁盘文件中。

选项

答案将二叉排序树上的各整数按降序写入磁盘,要对二叉排序树进行“中序遍历”,这里的“中序遍历”要采取“右根左”。为方便起见,先将整数写入一全局变量数组中,再写入磁盘文件中。 int i=0,a[n]; //长度为n的整型数组 void InOrder(BSTree t){ //先右后左的中序遍历二叉排序树t,假定该树t已生成 if(t){ InOrder(t一>rchild); a[i++]=t一>key; InOrder(t一>lchild); } } void SaveToDisk(){ //将二叉排序树上的各整数按降序写入磁盘 FILE*rp; if((fp=fopen(”filel.dat”,”wb”))==null){ printf(”file can not open!\n”);exit(0); } fwrite(a,sizeof(int),n,fp); //将数组a中的n个整数写入磁盘 fclose(fp); //关闭文件 }

解析
转载请注明原文地址:https://kaotiyun.com/show/73Ri777K
0

最新回复(0)