二叉链表建立二叉树 为什么不能先序遍历输出值呢

#include<stdio.h>
#include<stdlib.h> 
typedef struct bitnode
 {
     char data;
     struct bitnode *lchild,*rchild;
 }Bitnode,*Bitree;
int j = 1;
Bitree i;
void createbitree(Bitree t)
{
    char ch;
    
    scanf("%c",&ch);
    if(ch == ' ')
        t = NULL;
    else
    {
        t = (Bitnode*)malloc(sizeof(Bitnode));
        if(j == 1)
        i = t;
        j++;
        t->data = ch;
        createbitree(t->lchild); 
        createbitree(t->rchild);
    }
    
        
 } 
 void preorder(Bitree t)
{
    if(t == NULL) return;
    printf("%c",t->data);
    preorder(t->lchild);
    printf("%c",t->lchild);
    preorder(t->rchild);
    printf("%c",t->rchild);

main()
 {
     Bitree bt;
     createbitree(bt);
     preorder(i);
 }

没事,一些小细节问题,给你改好了,看注释:

#include<stdio.h>
#include<stdlib.h> 
typedef struct bitnode {
	char data;
	struct bitnode *lchild, *rchild;
}Bitnode, *Bitree;
int j = 1;
Bitree i;
void createbitree(Bitree &t) {		// 需要传引用
	char ch;

 	scanf_s("%c", &ch);

	char c;		// 清空输入缓冲区
	while ((c = getchar()) != '\n');
	
	if (ch == ' ')
		t = NULL;
	else {
		t = (Bitnode*)malloc(sizeof(Bitnode));
		if (j == 1)
			i = t;

		j++;
		t->data = ch;
		createbitree(t->lchild);
		createbitree(t->rchild);
	}


}
void preorder(Bitree t) {
	if (t == NULL) return;
	printf("%c", t->data);
	preorder(t->lchild);
	//printf("%c", t->lchild);
	preorder(t->rchild);
	//printf("%c", t->rchild);
}
int main() {
	Bitree bt = NULL;
	createbitree(bt);
	preorder(i);

	return 0;
}

点个采纳吧!

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632