voidlevel(BiTNode* p, int lev) { if (lev < 1 || p == NULL) return; if (p != NULL && lev == 1) printf("%d\t", p->data); level(p->lchild, lev - 1); level(p->rchild, lev - 1); }
void _Level_Fraversal(BiTNode* p) { printf("Level Traversal:\n"); for (int i = 1; i <= DeepMax; i++) level(p, i); printf("\n"); }
BiTNode* BT = NULL; // 全局定义树的根结点 int LeafNodecnt = 0; // 全局定义树的叶子结点数 int Deep = 0; // 全局定义当前深度 int DeepMax = 0; // 全局定义二叉树深度 int Tree[maxn]; // 全局定义一个数组存储结点,以便层次遍历 int index; // 全局定义Tree数组的索引 int index_max; FILE* fin = fopen("In.txt", "r+");
BiTNode* Create_BiTree(){ int data; BiTNode* Node; fscanf(fin,"%d", &data); //scanf("%d",&data); if (data == 0) Node = NULL; else { if (!(Node = (BiTNode*)malloc(sizeof(BiTNode)))) { printf("ERROR!"); exit(0); } if (BT == NULL) { BT = Node; } Node->data = data; Tree[index] = data; Deep++; if (Deep > DeepMax) DeepMax = Deep; index *= 2; if (index > index_max) index_max = index; Node->lchild = Create_BiTree(); index++; if (index > index_max) index_max = index; Node->rchild = Create_BiTree(); index = (index - 1) / 2; Deep--; } return Node; }
voidLevel_Traversal(){ printf("Level Traversal:\n"); for (int i = 1; i <= index_max; i++) if (Tree[i] != 0)printf("%d\t", Tree[i]); printf("\n"); }
voidlevel(BiTNode* p, int lev) { if (lev < 1 || p == NULL) return; if (p != NULL && lev == 1) printf("%d\t", p->data); level(p->lchild, lev - 1); level(p->rchild, lev - 1); }
void _Level_Fraversal(BiTNode* p) { printf("Level Traversal:\n"); for (int i = 1; i <= DeepMax; i++) level(p, i); printf("\n"); }