| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 414 人关注过本帖
标题:请教一下这个为什么无法生成
只看楼主 加入收藏
weiziyi0530
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-11-16
结帖率:100%
收藏
已结贴  问题点数:16 回复次数:4 
请教一下这个为什么无法生成
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

#define OK 1
#define OVERFLOW -2
#define ERROR -1

#define  MAX_TREE_SIZE  100                    // 二叉树的最大结点数
 typedef int  SqBiTree[MAX_TREE_SIZE];                 // 0号单元存储根结点
 SqBiTree  bt; typedef struct BiTNode{     char data;   
 struct BiTNode *lchild,*rchild;//左右孩子指针 }BiTNode,*BiTree;
//先序建立二叉树
int CreateBiTree(BiTree &T){   
  //按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树   
 //构造二叉链表表示的二叉树T   
  char ch;   
  scanf(&ch);  
   if(ch=='0')  T=NULL;   
  else{   
     if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))           exit(OVERFLOW);      
   T->data=ch;   
     CreateBiTree(T->lchild );//构造左子树     
    CreateBiTree(T->rchild );//构造右子树     }   
  return OK; }
 int PreOrderTraverse(BiTree T,int(*Visit)(char e)){   
  //采用二叉链表存储结构,Visit是对数据元素操作的应用函数   
 //先序遍历二叉树T的递归算法,对每个数据元素调用函数Visit   
  if(T){         if(Visit(T->data ))            
 if(PreOrderTraverse(T->lchild ,Visit))         
       if(PreOrderTraverse(T->rchild ,Visit))
  return OK;         
return ERROR;     }else return OK; }
//显示
 int PrintElement(char e){   
 printf("%c\n",e);
 return OK; }
 int main(){   
 BiTNode *T;   
 CreateBiTree(T);  
   PreOrderTraverse(T,PrintElement);  
   return 0; }
搜索更多相关主题的帖子: 存储 include 二叉树 
2012-11-20 21:19
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:10 
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

#define OK 1
#define OVERFLOW -2
#define ERROR -1

#define  MAX_TREE_SIZE  100                    // 二叉树的最大结点数
typedef int  SqBiTree[MAX_TREE_SIZE];                 // 0号单元存储根结点
SqBiTree  bt;
typedef struct BiTNode{     
    char data;   
    struct BiTNode *lchild,*rchild;
} BiTNode;
 BiTNode *BiTree;
 
int CreateBiTree(BiTNode *T){   
  //按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树   
//构造二叉链表表示的二叉树T   
  char ch;   
  scanf(&ch);  
   if(ch=='0')  T=NULL;   
  else{   
     if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))           
         exit(OVERFLOW);      
        T->data=ch;   
         CreateBiTree(T->lchild );//构造左子树     
          CreateBiTree(T->rchild );//构造右子树     
         
          return OK; }}
int PreOrderTraverse( BiTNode *T,int Visit(char e)){   
  //采用二叉链表存储结构,Visit是对数据元素操作的应用函数   
//先序遍历二叉树T的递归算法,对每个数据元素调用函数Visit   
  if(T){         if(Visit(T->data ))            
if(PreOrderTraverse(T->lchild ,Visit))         
       if(PreOrderTraverse(T->rchild ,Visit))
  return OK;         
return ERROR;     }else return OK; }
//显示
int PrintElement(char e){   
printf("%c\n",e);
return OK; }
int main(){   
BiTNode *T;   
CreateBiTree(T);  
   PreOrderTraverse(T,PrintElement);  
   return 0; }

[ 本帖最后由 zhu224039 于 2012-11-21 07:08 编辑 ]

我要成为嘿嘿的黑客,替天行道
2012-11-21 06:59
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:1 
给你改好了,编译通过,算法嘛 这个就不好说了
很乱 说实在的  不是把代码编译 我还真心看不下去

我要成为嘿嘿的黑客,替天行道
2012-11-21 07:01
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:5 
void dayin(tree *p)          /*先序遍历*/
{   
    if(p!=NULL)
    {
        printf("%d %d\n",p->i);
        
      dayin(p->lift);
      dayin(p->right);
    }
}
送个算法给你

我要成为嘿嘿的黑客,替天行道
2012-11-21 07:09
weiziyi0530
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-11-16
收藏
得分:0 
回复 4楼 zhu224039
恩恩 我才开始学  正在努力中
2012-11-21 20:26
快速回复:请教一下这个为什么无法生成
数据加载中...
 
   



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

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