#include <stdio.h>
#include <strings.h>
#include <stdlib.h>
typedef struct node{t
int data;
struct node *next;
}linklist;
typedef struct tree{
int data;
struct tree *lchild, *rchild;
}tree;
tree *create(int i, int n) { tree *root = (tree *)malloc(sizeof(tree)); if(root == NULL) return NULL; root->data = i; if(2*i <= n) root->lchild = create(2*i, n); else root->lchild = NULL; if(2*i+1 <= n) root->rchild = create(2*i+1,n); else root->rchild = NULL; return root; }
int deLqueue(lqueue *lq) { if(lq == NULL) return NULL; if(lqueue_is_empty(lq)) return NULL; linklist *p = lq->front->next; lq->front->next = p->next; data_t data = p->data; free(p); p = NULL; if(lq->front->next == NULL) lq->rear = lq->front; return data; }
void cc(tree *root) { if(NULL == root) return ; lqueue *sq = createLqueue(); if(sq == NULL) return ; enLqueue(sq, root); while(lqueue_is_empty(sq) != 1) { tree *root = deLqueue(sq); printf("%d ",root->data); if(root->lchild != NULL) enLqueue(sq,root->lchild); if(root->rchild != NULL) enLqueue(sq,root->rchild); } return ; }
int main() { tree *root = create(1, 12); if(root == NULL) return -1; cc(root); printf("\n"); return 0; }