2008
10-27

#include<string.h>
#include<ctype.h>
#include<malloc.h>
#include<limits.h>


#include<stdio.h>


#include<stdlib.h> /* atoi() */
#include<io.h> /* eof() */
#include<math.h> /* floor(),ceil(),abs() */
#include<process.h> /* exit() */
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1


typedef struct BiTNode
 {
   char data;
   struct BiTNode *lchild,*rchild; /* 左右孩子指针 */
 }BiTNode,*BiTree;


 


void CreateBiTree(BiTNode *T)
 {
   char ch;
   scanf(“%c”,&ch);
   if(ch==’ ‘) /* 空 */
     T=NULL;
   else
   {
    T=(BiTree)malloc(sizeof(BiTNode));
     if(!T)
       exit(OVERFLOW);
      T->data=ch;/* 生成根结点 */
     CreateBiTree(T->lchild); /* 构造左子树 */ 
     CreateBiTree(T->rchild); /* 构造右子树 */
   }
 }



Status Visit(char e)
 {
   printf(“%c “,e);
   return OK;
 }


 



void InOrderTraverse(BiTNode *T)
 { 
   if(T)
   {
     InOrderTraverse(T->lchild); /* 先中序遍历左子树 */
     Visit(T->data); /* 再访问根结点 */
     InOrderTraverse(T->rchild); /* 最后中序遍历右子树 */
   }
 }



main()
{
 BiTree BT;
 
 CreateBiTree(BT);
 InOrderTraverse(BT);
 return 0;
}



高手赐教啊,这样为什么不行?
说出原因啊
谢谢了……


 


二叉树》有 2 条评论

  1. 嗯呐哦tt 说:

    应该是处在建树的时候,因为空格也是字符,所以那个循环不能跳出!改成用整形的的吧!以零为跳出条件!

  2. 江雪 说:

    如果输一个字符,再输一个NULL,应该退出了吧

留下一个回复