关于简单的二叉数的有关问题.
关于简单的二叉数的问题..
#include <stdio.h>
#include <stdlib.h>
typedef struct btnode //二叉树的二叉链表存储结构.........
{
char data ;
struct btnode *lchild,*rchild ;
} *bitree ;
char createbitree(bitree t) //先序遍历生成二叉树..........
{
char temp ;
t=(bitree )malloc(sizeof(bitree));
if(t==NULL)
return 0;
printf( "请输入一个字母: ");
scanf( "%c ",&t-> data);
temp=getchar(); //结束回车...........
if(t-> data!= ' ')
{
createbitree(t-> lchild) ;//构造左子树...........
createbitree(t-> rchild) ;//构造右子树.........
}
return 1;
}
char PrintElem(char e) //打印元素 ........
{
printf( "%c ",e);
return 1;
}
char preordretraverse(bitree t,char (* visit)(char e) ) //先序遍历二叉树
{
if(t) //二叉树不为空时
{
visit(t-> data); //访问根结点
preordretraverse(t-> lchild,visit); // 先序遍历左子树
preordretraverse(t-> rchild,visit); //先序遍历右子树
}
return 1;
}
char main()
{
bitree t;
char (* visit)(char );
visit=PrintElem ;
createbitree(t);
preordretraverse(t,visit);
return 1;
}
/*
/////////////////////////////////////////////////////////////////////////////////////
输入一个元素: A
输入一个元素: B
输入一个元素: C
输入一个元素:
输入一个元素:
输入一个元素: D
输入一个元素: E
输入一个元素:
输入一个元素: G
输入一个元素:
输入一个元素:
输入一个元素: F
输入一个元素:
输入一个元素:
输入一个元素:
结果因为:A B C D E G F
////////////////////////////////////////////////////////////////////////////////////////////
*/
///编译没有错。..但输出时出现了问题..请大哥们帮帮忙....谢谢了。..
------解决方案--------------------
帮你修改了一下,你试试吧
........
char createbitree(bitree *t) //先序遍历生成二叉树..........
{
char temp ;
*t=(bitree )malloc(sizeof(bitree));
if(*t==NULL)
return 0;
printf( "请输入一个字母: ");
scanf( "%c ",&(*t)-> data);
temp=getchar(); //结束回车...........
if((*t)-> data!= ' ')
{
createbitree(&(*(t)-> lchild)) ;//构造左子树...........
createbitree(&(*(t)-> rchild)) ;//构造右子树.........
}
return 1;
}
.............
char main()
{
bitree t;
char (* visit)(char);
visit=PrintElem ;
createbitree(&t);
preordretraverse(t,visit);
system( "pause ");
#include <stdio.h>
#include <stdlib.h>
typedef struct btnode //二叉树的二叉链表存储结构.........
{
char data ;
struct btnode *lchild,*rchild ;
} *bitree ;
char createbitree(bitree t) //先序遍历生成二叉树..........
{
char temp ;
t=(bitree )malloc(sizeof(bitree));
if(t==NULL)
return 0;
printf( "请输入一个字母: ");
scanf( "%c ",&t-> data);
temp=getchar(); //结束回车...........
if(t-> data!= ' ')
{
createbitree(t-> lchild) ;//构造左子树...........
createbitree(t-> rchild) ;//构造右子树.........
}
return 1;
}
char PrintElem(char e) //打印元素 ........
{
printf( "%c ",e);
return 1;
}
char preordretraverse(bitree t,char (* visit)(char e) ) //先序遍历二叉树
{
if(t) //二叉树不为空时
{
visit(t-> data); //访问根结点
preordretraverse(t-> lchild,visit); // 先序遍历左子树
preordretraverse(t-> rchild,visit); //先序遍历右子树
}
return 1;
}
char main()
{
bitree t;
char (* visit)(char );
visit=PrintElem ;
createbitree(t);
preordretraverse(t,visit);
return 1;
}
/*
/////////////////////////////////////////////////////////////////////////////////////
输入一个元素: A
输入一个元素: B
输入一个元素: C
输入一个元素:
输入一个元素:
输入一个元素: D
输入一个元素: E
输入一个元素:
输入一个元素: G
输入一个元素:
输入一个元素:
输入一个元素: F
输入一个元素:
输入一个元素:
输入一个元素:
结果因为:A B C D E G F
////////////////////////////////////////////////////////////////////////////////////////////
*/
///编译没有错。..但输出时出现了问题..请大哥们帮帮忙....谢谢了。..
------解决方案--------------------
帮你修改了一下,你试试吧
........
char createbitree(bitree *t) //先序遍历生成二叉树..........
{
char temp ;
*t=(bitree )malloc(sizeof(bitree));
if(*t==NULL)
return 0;
printf( "请输入一个字母: ");
scanf( "%c ",&(*t)-> data);
temp=getchar(); //结束回车...........
if((*t)-> data!= ' ')
{
createbitree(&(*(t)-> lchild)) ;//构造左子树...........
createbitree(&(*(t)-> rchild)) ;//构造右子树.........
}
return 1;
}
.............
char main()
{
bitree t;
char (* visit)(char);
visit=PrintElem ;
createbitree(&t);
preordretraverse(t,visit);
system( "pause ");