5个回答
展开全部
设计一个算法层序遍历二叉树(同一层从左到右访问)。思想:用一个队列保存被访问的当前节点的左右孩子以实现层序遍历。
void HierarchyBiTree(BiTree Root){
LinkQueue *Q; // 保存当前节点的左右孩子的队列
InitQueue(Q); // 初始化队列
if (Root == NULL) return ; //树为空则返回
BiNode *p = Root; // 临时保存树根Root到指针p中
Visit(p->data); // 访问根节点
if (p->lchild) EnQueue(Q, p->lchild); // 若存在左孩子,左孩子进队列
if (p->rchild) EnQueue(Q, p->rchild); // 若存在右孩子,右孩子进队列
while (!QueueEmpty(Q)) // 若队列不空,则层序遍历 { DeQueue(Q, p); // 出队列
Visit(p->data);// 访问当前节点
if (p->lchild) EnQueue(Q, p->lchild); // 若存在左孩子,左孩子进队列
if (p->rchild) EnQueue(Q, p->rchild); // 若存在右孩子,右孩子进队列
}
DestroyQueue(Q); // 释放队列空间
return ;
这个已经很详细了!你一定可以看懂的!加油啊!
void HierarchyBiTree(BiTree Root){
LinkQueue *Q; // 保存当前节点的左右孩子的队列
InitQueue(Q); // 初始化队列
if (Root == NULL) return ; //树为空则返回
BiNode *p = Root; // 临时保存树根Root到指针p中
Visit(p->data); // 访问根节点
if (p->lchild) EnQueue(Q, p->lchild); // 若存在左孩子,左孩子进队列
if (p->rchild) EnQueue(Q, p->rchild); // 若存在右孩子,右孩子进队列
while (!QueueEmpty(Q)) // 若队列不空,则层序遍历 { DeQueue(Q, p); // 出队列
Visit(p->data);// 访问当前节点
if (p->lchild) EnQueue(Q, p->lchild); // 若存在左孩子,左孩子进队列
if (p->rchild) EnQueue(Q, p->rchild); // 若存在右孩子,右孩子进队列
}
DestroyQueue(Q); // 释放队列空间
return ;
这个已经很详细了!你一定可以看懂的!加油啊!
展开全部
树: A
/ \
B F
/ \ \
C D G
/ \
E F
从上到下,从左到右:A、B、F、C、D、G、E、F
/ \
B F
/ \ \
C D G
/ \
E F
从上到下,从左到右:A、B、F、C、D、G、E、F
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void level (BTNode *p)
{
int front,rear;
BTNode *que[maxSize];
front=rear=0;
BTNode *q;
if(p!=NULL){
rear=(rear+1)%maxSize;
que[rear]=p;
while(front !=rear){
front =(front+1)%maxSize;
q=que[front];
Visit(q);
if(q->lchild!=NULL){
rear=(rear+1)%maxSize;
que[rear]=q->lchild;
}
if(q->rchild!=NULL){
rear=(rear+1)%maxSize;
que[rear]=q->rchild;
}}}
{
int front,rear;
BTNode *que[maxSize];
front=rear=0;
BTNode *q;
if(p!=NULL){
rear=(rear+1)%maxSize;
que[rear]=p;
while(front !=rear){
front =(front+1)%maxSize;
q=que[front];
Visit(q);
if(q->lchild!=NULL){
rear=(rear+1)%maxSize;
que[rear]=q->lchild;
}
if(q->rchild!=NULL){
rear=(rear+1)%maxSize;
que[rear]=q->rchild;
}}}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按层来,从左往右数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询