| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 805 人关注过本帖
标题:二叉树的遍历怎么实现不了
只看楼主 加入收藏
a906314530
Rank: 1
等 级:新手上路
帖 子:10
专家分:7
注 册:2012-11-10
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:5 
二叉树的遍历怎么实现不了
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define MAX_TREE_SIZE 100
typedef char TElemType;
typedef int Status;
typedef struct BiTNode{
char   data;
 struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int  CreatBiTree(BiTree &T){
    char ch;
    scanf(&ch);
    if(ch==' ') T=NULL;
    else{
        if(!(T = (BiTNode *)malloc(sizeof(BiTNode))))exit(OVERFLOW);
        T->data=ch;
        CreatBiTree(T->lchild);
        CreatBiTree(T->rchild);

    }
    return OK;
}

void TraverseBiTree(BiTree T){
char ch;
    if(NULL==T)
        return ;
    printf("%c",T->data);
      TraverseBiTree(T->lchild);
        TraverseBiTree(T->rchild);


}//先序
void InOrder(BiTree T){
char ch;
    if(NULL==T)
        return ;
    InOrder(T->lchild);
     printf("%c",T->data);
        InOrder(T->rchild);


}//中序
void PostOrder(BiTree T){
char ch;
    if(NULL==T)
        return ;
    PostOrder(T->lchild);
        PostOrder(T->rchild);
            printf("%c",T->data);

}//后序

int main()
{    char ch;
     struct BiTNode *T=0;
          CreatBiTree(T);
   
     printf("中序遍历:\n");
     InOrder(T);
     printf("\n");
     printf("先序遍历:\n");
      TraverseBiTree(T);
       printf("\n");
         printf("后序遍历:\n");
      PostOrder(T);
return OK;
}
搜索更多相关主题的帖子: include 二叉树 
2013-04-23 10:01
逆风而前
Rank: 7Rank: 7Rank: 7
来 自:福建
等 级:黑侠
威 望:7
帖 子:193
专家分:567
注 册:2013-2-14
收藏
得分:10 
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define MAX_TREE_SIZE 100
typedef char TElemType;
typedef int Status;
typedef struct BiTNode
{
char   data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int  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);

    }
    return OK;
}

void TraverseBiTree(BiTree T)
{
//char ch;
    if(NULL==T)
        return ;
    printf("%c",T->data);
    TraverseBiTree(T->lchild);
    TraverseBiTree(T->rchild);


}//先序
void InOrder(BiTree T)
{
//char ch;
    if(NULL==T)
        return ;
    InOrder(T->lchild);
    printf("%c",T->data);
    InOrder(T->rchild);


}//中序
void PostOrder(BiTree T)
{
//char ch;
    if(NULL==T)     
        return ;
    PostOrder(T->lchild);
    PostOrder(T->rchild);
    printf("%c",T->data);

}//后序

int main()
{    //char ch;
     struct BiTNode *T=0;
     CreatBiTree(T);
     printf("中序遍历:\n");
     InOrder(T);
     printf("\n\n");
     printf("先序遍历:\n");
     TraverseBiTree(T);
     printf("\n\n");
     printf("后序遍历:\n");
     PostOrder(T);
     printf("\n\n");
     return OK;
}   
2013-04-23 16:15
逆风而前
Rank: 7Rank: 7Rank: 7
来 自:福建
等 级:黑侠
威 望:7
帖 子:193
专家分:567
注 册:2013-2-14
收藏
得分:10 
图片附件: 游客没有浏览图片的权限,请 登录注册
2013-04-23 16:16
a906314530
Rank: 1
等 级:新手上路
帖 子:10
专家分:7
注 册:2012-11-10
收藏
得分:0 
我的错误是那里?求教育……
2013-04-24 10:20
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
你 的遍历不对吧!你的每次都没判断根节点,应该这样写吧!
void InOrder(BiTree T){

    if(T!=NULL)         //=NULL是递归结束条件
    {
        InOrder(T->lchild);        //中序遍历根的左子树
     printf("%c",T->data);          //访问根结点
        InOrder(T->rchild);          //右子树
    }

Maybe
2013-04-24 18:43
a906314530
Rank: 1
等 级:新手上路
帖 子:10
专家分:7
注 册:2012-11-10
收藏
得分:0 
遍历是对的
2013-04-24 20:04
快速回复:二叉树的遍历怎么实现不了
数据加载中...
 
   



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

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