12.完全二叉树的顺序存储表示

来源:互联网 发布:淘宝如何解除快捷支付 编辑:程序博客网 时间:2024/06/15 10:44
////////////////////////////////////////#include<stdio.h>#include<stdlib.h>#define OK 0#define ERROR 1typedef char ElemType;FILE *fp;void InitFile(){fp = fopen("data.txt", "r+");if (!fp) exit(ERROR);return;}typedef bool Status;//////////////////////////////////////////完全二叉树的顺序存储表示typedef struct{ElemType *data;int l;}FBTree,*FBTreePtr;Status CreateFBTree(FBTree &T){fscanf_s(fp, "%d", &T.l);// 按 数组 顺序 初始化完全二叉树...if (!(T.data = (ElemType *)malloc(sizeof(ElemType)*(T.l+1))))  return ERROR;for (int i = 1; i <= T.l; i++) fscanf_s(fp, "%c", T.data + i);return OK;}Status DestroyFBTree(FBTree &T){free(T.data);return OK;}int Get_lchild(FBTree T,int i)//得到 左孩子的数组索引{return  (2 * i > T.l) ? -1 : 2 * i;}int Get_rchild(FBTree T, int i){return  (2 * i +1 > T.l) ? -1 : 2 * i +1;}Status InorderTree(FBTree T,int i){if (i <= T.l){InorderTree(T, 2 * i);printf("%c ", T.data[i]);InorderTree(T, 2 * i + 1);}return OK;}Status PreorderTree(FBTree T,int i){if (i <= T.l){printf("%c ", T.data[i]);PreorderTree(T, 2 * i);PreorderTree(T, 2 * i + 1);}return OK;}Status PostorderTree(FBTree T, int i){if (i <= T.l){PostorderTree(T, 2 * i);PostorderTree(T, 2 * i + 1);printf("%c ", T.data[i]);}return OK;}int main(){InitFile();FBTree A;CreateFBTree(A);printf("中序遍历:\n");InorderTree(A, 1);printf("\n先序遍历:\n");PreorderTree(A, 1);printf("\n后序遍历:\n");PostorderTree(A, 1);putchar(10);fclose(fp);return 0;}


0 0
原创粉丝点击