| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 480 人关注过本帖
标题:二叉树的层次遍历怎么写啊,要求以输出形式遍历,求大神指教。
取消只看楼主 加入收藏
c语言学子
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-10-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
二叉树的层次遍历怎么写啊,要求以输出形式遍历,求大神指教。
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define OVERFLOW -2
typedef struct BiTNode
{
    char data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreatBiTree(BiTree &T)
{
    char ch;
    scanf("%c",&ch);
    if(ch=='#')T=NULL;
    else
    {
        if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))exit(OVERFLOW);
        T->data=ch;
        CreatBiTree(T->lchild);
        CreatBiTree(T->rchild);
    }

}//创建

void PreOrderBiTree(BiTree T)
{
    if(T)
    {
        printf("%c",T->data);
        PreOrderBiTree(T->lchild);
        PreOrderBiTree(T->rchild);
    }
}//先序遍历
void InOrderBiTree(BiTree T)
{
    if(T)
    {
        InOrderBiTree(T->lchild);
        printf("%c",T->data);
        InOrderBiTree(T->rchild);
    }
}//中序遍历
void PostOrderBiTree(BiTree T)
{
    if(T)
    {
        PostOrderBiTree(T->lchild);
        PostOrderBiTree(T->rchild);
        printf("%c",T->data);
    }
}//后续遍历
 void cengciBiTree(BiTree T)
 {
     if(T)
     {
         printf("%c",T->data);//这里需要写一个层次遍历的函数,求指教。


void main()
{
    BiTree T;
    CreatBiTree(T);
    printf("先序遍历结果:");
    PreOrderBiTree(T);
    printf("\n");
    printf("中序遍历结果:");
    InOrderBiTree(T);
    printf("\n");
    printf("后序遍历结果:");
    PostOrderBiTree(T);
    printf("\n");
}



   
搜索更多相关主题的帖子: include 二叉树 
2013-11-19 21:37
c语言学子
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-10-29
收藏
得分:0 
回复 3楼 qq771964904
是要求以输出的形式遍历出来,你写的好像没有输出,我调试了一下,也没有成功。
2013-11-19 22:14
c语言学子
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-10-29
收藏
得分:0 

经过多方查找,问题已经解决。
利用队列的知识解决,已找到正确答案
void cengciBiTree(BiTree T)
{
    int i,j;
    BiTNode *q[20],*p;
    p=T;
    if(p!=NULL)
    {
        i=1;q[i]=p;j=2;
    }
    while(i!=j)
    {
        p=q[i];
        printf("%c",p->data);
        if (p->lchild!=NULL)
        {
            q[j]=p->lchild;
            j++;
        }
      
        if (p->rchild!=NULL)
        {
            q[j]=p->rchild;
            j++;
        }
        
        i++;
    }
}//以输出的形式进行层次遍历。
2013-11-19 22:47
快速回复:二叉树的层次遍历怎么写啊,要求以输出形式遍历,求大神指教。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012658 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved