或者
问答详情页顶部banner图
您的位置:首页 >推广 > 其他 > 其他 > 数据结构(C语言)二叉树问题出在哪,怎么进行更改

数据结构(C语言)二叉树问题出在哪,怎么进行更改

提问者:注定孤独终老  |   分类:其他  |   浏览80次  |   悬赏分:0积分 2017-11-16 11:05:46

我要回答

提 交

匿名

  • 竹墨SEO

    #include #include #include typedef struct node { int elem; struct node *lch,*rch; }Bnode; Bnode *creat() { Bnode *root =NULL; Bnode *s[20]; int i,x; int j; printf("input i and x:"); scanf("%d,%d",&i,&x); while(i != 0) { Bnode *p = (Bnode *)malloc(sizeof(Bnode)); p->elem = x; p->lch = NULL; p->rch = NULL; s[i] = p; if(i == 1)root=p; else { j = i/2; if(i%2 == 0) //编号为偶数 s[j]->lch = p; else s[j]->rch = p; } printf("input i and x:"); scanf("%d,%d",&i,&x); } return root; } void anceng(Bnode *p) //按层遍历 { Bnode *q = p; Bnode *s[20]; int front = 0; int rear = 0; if(q != NULL) { rear++; s[rear] = q; } while(rear != front) { front++; p = s[front]; printf("%d\n",p->elem); if(p->lch != NULL) { rear++; s[rear] = p->lch; } if(p->rch != NULL) { rear++; s[rear] = p->rch; } } } void zhonggen(Bnode *p) //非递归中根遍历 { Bnode *q = p; Bnode *s[20]; int top = 0; int flag = 1; do { while(q != NULL) { top++; s[top] = q; q = q->lch; } if(top == 0)flag = 0; else { q = s[top]; top--; printf("%d\n",q->elem); q = q->rch; } } while(flag); } void postorder(Bnode *p) //递归后根遍历 { if(p!= NULL) { postorder(p->lch); postorder(p->rch); printf("%d\n",p->elem); } } void inorder(Bnode *p) //递归中根遍历 { if(p!= NULL) { inorder(p->lch); printf("%d\n",p->elem); inorder(p->rch); } } void preorder(Bnode *p) //递归先根遍历 { if(p!= NULL) { printf("%d\n",p->elem); preorder(p->lch); preorder(p->rch); } } int main(void) { int tmp; int i = 0; int choice; Bnode *root; do

    2017-11-17 16:37:59
    评论0  |   0
问答详情中间banner