我以一个例子说明一下:
先序创建,读入字符的顺序如下:A B C * * D E * G * * F * * *
首先输入一个字符为A,判断不是空格,分配存储空间并且使其数据为A,下面执行到了 CreateBinTree(&(*T)->lchild);,构造左子树,A的右子树等待创建,!注意此时为递归调CreateBinTree函数,又再次要求输入数据,此时输入B,然后创建B的左子树,B的右子树等待创建(注意了A此时仍在等待创建他的右子树),
创建B的左子树时用户输入了C,此时再次进入调用,先创建左子树,右子树等待创建,此后用户输入了*,即左子树为空,然后创建右子树,用户输入*,此时应该有些明白了,C这一棵"局部的树"创建完毕,但是你要知道B和A都在等待创建自己的右子树,递归过程有了回退的过程,退到创建B的右子树,创建B的右子树的过程我不必再赘述了...
可能有些罗嗦,但是如果认真看,其实帮助不小.....