C语言数据结构 建立树的Child-Sibling链表,T没有链接下面的节点怎么办

问题如图

img

#include<stdio.h>
#include<stdlib.h>
#include<queue>
using namespace std;

typedef struct BiTNode
{
    char Data;
    struct BiTNode *SiBling,*FirstChild;
}BiTNode,*BiTree;

void inittree (BiTree &T)
{
    T=(BiTNode*)malloc(sizeof(BiTNode));
    T->FirstChild=T->SiBling=NULL;
}

void Create(BiTree &T,int n)
{
    queue<BiTree>Q;
    char F,C;
    BiTree p;
    BiTree s;
    BiTree r;
    for(int i=0;i<n;i++)
    {
        T=NULL;
        scanf("%c",&F);
        getchar();
        scanf("%c",&C);
        getchar();
        p=(BiTNode*)malloc(sizeof(BiTNode));
        p->Data=C;
        p->FirstChild=p->SiBling=NULL;
        Q.push(p);
        if(F=='#')T=p;
        else
        {
            s=Q.front();
            while(s->Data!=F)
            {
                Q.pop();
                s=Q.front();
            }
            if(!(s->FirstChild))
            {
                s->FirstChild=p;r=p;
            }
            else
            {
                r->SiBling=p;r=p;
            }
        }
    }
    
}

void PreOrder(BiTree Pre)
{
    if(Pre=NULL)return;
    printf(" %d",Pre->Data);
    PreOrder(Pre->FirstChild);
    PreOrder(Pre->SiBling);
}

void PostOrder(BiTree Post)
{
    if(Post=NULL)return;
    PostOrder(Post->FirstChild);
    printf(" %d",Post->Data);
    PostOrder(Post->SiBling);
}

int max(int a,int b)
{
    if(a>b)return a;
    else return b;
}

int h1,h2;
int TreeDepth(BiTree T) {
  if(!T) return 0;
  else {
    h1 = TreeDepth( T->FirstChild );
    h2 = TreeDepth( T->SiBling);
    return (max(h1+1,h2));
  }
}

//int Leaf(BiTree T)
//{
//    if(T==NULL)return 0;
//    if(T->SiBling==NULL)return 1;
//    return Leaf(T->SiBling);
//}

int main()
{
    int n;
    BiTree T;
    inittree(T);
    scanf("%d",&n);
    getchar();
    Create(T,n);
    printf("PreOrder:");
    PreOrder(T);
    printf("\n");
    printf("PostOrder:");
    PostOrder(T);
    printf("\n");
    printf("Depth:%d\n",TreeDepth(T));
//    printf("Number of leaves:%d\n",Leaf(T));
    return 0;
}

我想要达到的结果

输入
7
’# ‘(没有单引号)A
A B
A C
A D
C E
C F
E G

输出
PreOrder: A B C E G F D
PostOrder: B G E F C D A
Depth:4
Number of leaves:4