二叉树建立后元素输入不进去而且也打印不出来

二叉树建立成功,而且能够运行,但是有一个警告,原本我是想着手动输入元素,但是输入不进去,于是我又改变了这个方法,采用直接赋值,但是也是打印不出来

#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
typedef int elemtype;

typedef struct node {//二叉树的链式存储
elemtype data;
struct node *lchild;
struct node *rchild;
}btnode;

void initbitree(btnode *&t) {//初始化二叉树,构造一棵空的二叉树
t=NULL;
}

void creatbitree(btnode *&t,char *str){//创建二叉树
btnode *st[maxsize],*p=NULL;
int top=-1;
int tag;
char j=0;
char ch;
t=NULL;//初始化完成
ch=str[j];
while(ch!='\0'){
switch(ch){
case'(':
top++;
st[top]=t;
tag=1;
break;
case')':
top--;
break;
case',':
tag=2;
break;
default:
p=(btnode *)malloc(sizeof(btnode));
p->data=ch;
p->lchild=p->rchild=NULL;
if(t=NULL){
t=p;
}
else{
switch(tag){
case 1:
st[top]->lchild=p;
break;
case 2:
st[top]->rchild=p;
break;
}
}
}
j++;
ch=str[j];
}
}

void printbitree(btnode *t){//输出二叉树
if(t!=NULL){
printf("%c",t->data);
if(t->lchild!=NULL||t->rchild!=NULL){
printf("(");
printbitree(t->lchild);
if(t->rchild!=NULL)
printf(",");
printbitree(t->rchild);
printf(")");
}
}
}

int main(void){
int h,i=0,f;
char st[i];
btnode t;
initbitree(t);
/
printf("请输入你要输入的元素个数\n"); //这里原本是想着手动输入元素,但是运行不了于是直接进行了赋值
scanf("%d",&h);
printf("请输入你要输入的元素\n");
for(f=0;f<h;f++){
for(i=0;i<h;i++)
scanf("%d",st[i]);
creatbitree(t,&st);
}
/
printf("二叉树如下\n");
creatbitree(t,"1(2(7,9),3)");//直接赋值

 printbitree(t);

}

运行结果

img

一直找不到问题所在,希望能够得到帮助和回应,一定会积极采纳,谢谢!