首页 > 试题广场 >

算法设计题

[问答题]

算法设计题

如果以二叉链表做为存储结构,试用类C语言编写统计二叉树非叶子结点个数的层次遍历算法。

算法题

typedef struct BiTreeNode{---------------给出存储结构定义得3分

DataType data;

struct BiTreeNode *lchild,rchild;

} BiTreeNode,*BiTree;

int LevelOrder(BiTree bt){

BiTreeNode Queue[MAXNODE];/*定义队列*/

int front,rear,count;

if(bt==NULL) return 0;  /*空二叉树,遍历结束*/---------1分

front=-1;rear=0;

count=0;

Queue[rear]=bt;   /*根结点入队列*/----------------1分

while(rear!=front){  /*队列不空,继续遍历,否则,遍历结束*/-----1分

front++;      /*出队*/---------------1分

if(Queue[front]->lchild!=NULL||Queue[front]->rchild!=NULL) ---------1分

count++;      /*统计非叶子结点个数*/---------------1分

if(queue[front]->lchild!=NULL){      /*如果有左孩子,左孩子入队*/---------------1分

rear++;---------------1分

Queue[rear]=Queue[front]->lchild;---------------1分

}

if(queue[front]->rchild!=NULL){      /*如果有右孩子,右孩子入队*/---------------1分

rear++;---------------1分

Queue[rear]=Queue[front]->rchild;---------------1分

}

}

return count;

}

发表于 2016-11-22 21:11:31 回复(0)