关于二叉树的遍历有关问题,有人能帮小弟我看看不

关于二叉树的遍历问题,有人能帮我看看不
void CreateBiTree(BiTree &T) { //递归算法6.4-按先序序列构造二叉树 A B C # # D E # G # # F # # #
char ch;
scanf("%c", &ch);
if (ch=='#')
T = NULL;
else{
if (!(T = (BiTree)malloc(sizeof(BiTNode)))) exit(OVERFLOW);
T->data = ch; // 生成根结点
CreateBiTree(T->lchild); // 构造左子树
CreateBiTree(T->rchild); // 构造右子树
}

我输入
A B C # # D E # G # # F # # #
它构成的二叉树是怎样的,最好有图(构成的二叉树)。
我的想法:
先输入A,生成根节点,然后构造A的左子树,输入的是B,然后输入C,它构成了B的左子树,然后输入#,c没有孩子了,返回到上层,b的右子树收到的是#,所以A为根节点的二叉树的左子树构成,之后就是构成A的右子树,得到D,D的左孩子为E,E为根节点,因为之后他收到的是#号,D的右子树是G,之后的##F###怎么解释呢?

------解决方案--------------------

构造二叉树 A B C # # D E # G # # F # # # 

------解决方案--------------------
探讨
构造二叉树 A B C # # D E # G # # F # # #

------解决方案--------------------
C/C++ code
A B C # # D E # G # # F # # #

你把这个放在一个一维数组里,那就是一颗树了,参考: 堆.

------解决方案--------------------
遇到字符就入栈,遇'#'就出栈