二叉树顺序存储结构描述如下:
typedef struct BiTNode{
BiElem data;
BiTNode* lchild;
BiTNode* rchild;
}BiTNode,*BiTree;
借助一个辅助队列来辅助建树,结构描述如下:
typedef struct tag {
BiTree p;
tag* pnext;
}tag,*p_tag;
二叉树层次建树实现方法如下:
int main()
{
BiTree pnew;//存放新数据的节点
int i, j, pos;
char c;
BiTree tree = NULL;//树根节点
ptag_t phead = NULL;//辅助队列的队头
ptag_t ptail = NULL;//辅助队列的队尾
ptag_t listpnew;
ptag_t pcur = NULL;//游动指针
//abdhiejcfg
while (scanf("%c",&c) != EOF)//循环读取
{
if ('\n' == c)
{
break;
}
pnew = (BiTree)calloc(1, sizeof(BiTNode));
//申请一个二叉树节点大小空间12byte,并对空间初始化为0
pnew->data = c;
listpnew = (ptag_t)calloc(1, sizeof(tag_t));//给队列节点申请空间
listpnew->p = pnew;//存放树某节点的地址
if (NULL == tree)
{
tree = pnew;//树的根
phead