一个简单二叉树的建立与遍历问题
请教一个二叉树的问题,下面想先先序创建,后遍历输出,,可是输出老是有问题,,可否看看错哪了/*Note:YourchoiceisCIDE*/#include"stdio....
请教一个二叉树的问题,下面想先先序创建,后遍历输出,,可是输出老是有问题,,可否看看错哪了
/* Note:Your choice is C IDE */
#include "stdio.h"
#include"stdlib.h"
typedef struct btnode
{
int data;
struct btnode *lc,*rc;
}btnode,*bitree;
int i=1;
bitree a;
bitree precreate(bitree root)
{
int ch;
scanf("%d",&ch);
if(ch==0)
{
root=NULL;
return root;
}
else
{
root=(bitree)malloc(sizeof(btnode));
if(i==1){a=root;i=0;}
root->data=ch;
precreate(root->lc);
precreate(root->rc);
return root;
}
}
void preorder(bitree root)
{
if(root!=NULL)
{
printf("%d ",root->data);
preorder(root->lc);
preorder(root->rc);
}
}
void main()
{
precreate(a);
preorder(a);
} 展开
/* Note:Your choice is C IDE */
#include "stdio.h"
#include"stdlib.h"
typedef struct btnode
{
int data;
struct btnode *lc,*rc;
}btnode,*bitree;
int i=1;
bitree a;
bitree precreate(bitree root)
{
int ch;
scanf("%d",&ch);
if(ch==0)
{
root=NULL;
return root;
}
else
{
root=(bitree)malloc(sizeof(btnode));
if(i==1){a=root;i=0;}
root->data=ch;
precreate(root->lc);
precreate(root->rc);
return root;
}
}
void preorder(bitree root)
{
if(root!=NULL)
{
printf("%d ",root->data);
preorder(root->lc);
preorder(root->rc);
}
}
void main()
{
precreate(a);
preorder(a);
} 展开
1个回答
2013-11-08
展开全部
#include <stdlib.h>
#include <stdio.h>
typedef char ElemType;
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;/*定义二叉链表结点结构*/
void CreateBiTree(BiTree *T)
{/* 输入二叉树的先序遍历序列,创建二叉链表 */
char ch;
if ((ch=getchar())==' ')/* 如果读入空格字符,创建空树 */
*T=NULL;
else
{
*T=(BiTNode*)malloc(sizeof(BiTNode));/* 申请根结点*t空间 */
(*T)->data=ch;/* 将结点数据ch放入氏睁根结点的数据域 */
printf("当前根结点:%c\n",(*T)->data);
CreateBiTree(&(*T)->lchild);/* 建左子树 */
CreateBiTree(&(*T)->rchild);/* 建右子树 */
}
}
void PreOrder(BiTree T)
{/* 对二叉树进行先序遍历 */
if(T)
{
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BiTree T)
{/* 对二叉树进行中序遍历 */
if(T)
{
InOrder(T->lchild);
printf("%c"歼或岁,T->data);
InOrder(T->rchild);
}
}
void PostOrder(BiTree T)
{/* 对二叉树进行团闭后序遍历 */
if(T)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c",T->data);
}
}
/*建立二叉树的二叉链表表示,
并进行先序递归遍历、中序递归遍历、后序递归遍历,
*/
void main()
{
BiTree T=NULL;
printf("请输入二叉树的结点:\n");
CreateBiTree(&T);/*建立二叉链表*/
printf("先序遍历:");
PreOrder(T);/*对二叉树T进行先序遍历*/
printf("\n");
printf("中序遍历:");
InOrder(T);/*对二叉树T进行中序遍历*/
printf("\n后序遍历:");
PostOrder(T);/*对二叉树T进行后序遍历*/
printf("\n");
}
#include <stdio.h>
typedef char ElemType;
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;/*定义二叉链表结点结构*/
void CreateBiTree(BiTree *T)
{/* 输入二叉树的先序遍历序列,创建二叉链表 */
char ch;
if ((ch=getchar())==' ')/* 如果读入空格字符,创建空树 */
*T=NULL;
else
{
*T=(BiTNode*)malloc(sizeof(BiTNode));/* 申请根结点*t空间 */
(*T)->data=ch;/* 将结点数据ch放入氏睁根结点的数据域 */
printf("当前根结点:%c\n",(*T)->data);
CreateBiTree(&(*T)->lchild);/* 建左子树 */
CreateBiTree(&(*T)->rchild);/* 建右子树 */
}
}
void PreOrder(BiTree T)
{/* 对二叉树进行先序遍历 */
if(T)
{
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BiTree T)
{/* 对二叉树进行中序遍历 */
if(T)
{
InOrder(T->lchild);
printf("%c"歼或岁,T->data);
InOrder(T->rchild);
}
}
void PostOrder(BiTree T)
{/* 对二叉树进行团闭后序遍历 */
if(T)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c",T->data);
}
}
/*建立二叉树的二叉链表表示,
并进行先序递归遍历、中序递归遍历、后序递归遍历,
*/
void main()
{
BiTree T=NULL;
printf("请输入二叉树的结点:\n");
CreateBiTree(&T);/*建立二叉链表*/
printf("先序遍历:");
PreOrder(T);/*对二叉树T进行先序遍历*/
printf("\n");
printf("中序遍历:");
InOrder(T);/*对二叉树T进行中序遍历*/
printf("\n后序遍历:");
PostOrder(T);/*对二叉树T进行后序遍历*/
printf("\n");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询