将二叉树中每个结点的空指针引出一个虚结点,其值为一特定值(#),这种处理后的二叉树为原二叉树的扩展二叉树。
前序遍历序列为:AB#D##C##,生成一棵二叉树,实现算法如下:
void CreateBiTree(BiTree *T)
{
TElemType ch;
scanf("%c", &ch);
if (ch == '#')
*T = NULL;
else
{
*T = (BiTree) malloc (sizeof(BiTNode));
if (!*T)
exit(OVERFLOW);
(*T)->data = ch; //生成根结点
CreatedBiTree (&(*T)->lchild); //构造左子树
CreatedBiTree (&(*T)->rchild); //构造右子树
}
}
运用递归的原理,在原来打印出结点的地方改成生成结点、给结点赋值的操作。