| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 480 人关注过本帖
标题:二叉树的层次遍历怎么写啊,要求以输出形式遍历,求大神指教。
只看楼主 加入收藏
c语言学子
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-10-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
二叉树的层次遍历怎么写啊,要求以输出形式遍历,求大神指教。
#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
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:10 
从上到下,从左到右...  
只记得这么点了   数据结构忘光了
百度上很多的  自己查吧

三十年河东,三十年河西,莫欺少年穷!
2013-11-19 21:55
qq771964904
Rank: 2
等 级:论坛游民
帖 子:14
专家分:17
注 册:2013-11-19
收藏
得分:10 
void cengciBiTree(BiTree T)
{
     //这里需要写一个层次遍历的函数,求指教。
    int L,R;
    if(!T)   
        return 0;
    else
    {
        L=cengciBiTree(T->lchild);
        R=cengciBiTree(T->rchild);
        return L>R?L+1:R+1;
    }
}
试下吧


既不回头、何必不忘,既然无缘、何须誓言,今日种种、似水无痕,明夕何夕、君已陌路
2013-11-19 21:59
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
qq771964904
Rank: 2
等 级:论坛游民
帖 子:14
专家分:17
注 册:2013-11-19
收藏
得分:0 
不好意思看错啦  还以为求深度的呢.....

既不回头、何必不忘,既然无缘、何须誓言,今日种种、似水无痕,明夕何夕、君已陌路
2013-11-19 22:58
快速回复:二叉树的层次遍历怎么写啊,要求以输出形式遍历,求大神指教。
数据加载中...
 
   



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

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