关于二叉树建立(递归)不明白啊。
假设虚结点输入时以空格字符表示,相应的构造算法为:void CreateBinTree (BinTree *T)
{ //构造二叉链表。T是指向根指针的指针,故修改*T就修改了实参(根指针)本身
char ch;
if((ch=getchar())=='') *T=NULL; //读人空格,将相应指针置空
else{ //读人非空格
*T=(BinTNode *)malloc(sizeof(BinTNode)); //生成结点
(*T)->data=ch;
CreateBinTree(&(*T)->lchild); //构造左子树
CreateBinTree(&(*T)->rchild); //构造右子树
}
}
疑问:
1、如果读入的是空,执行*T=NULL,其作是干什么?
2、如果读入的不是空,则分配一个空间,生成结点,然后赋值。而构造左、右子树的过程是什么呢?就是是栈的操作是怎么样的?