数据结构二叉树的简单遍历问题
#include "stdio.h"
#include "stdlib.h"
typedef char TElemType;
typedef struct xx{
TElemType data;
struct xx *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTNode *T)
{
char ch;
ch=getchar();
if(ch==' ')T=NULL;
else
{
T=(BiTNode *)malloc(sizeof(BiTNode));
if(!T)
{
printf("申请失败!\n");
exit(0);
}
T->data=ch;
CreateBiTree(&T->lchild);
CreateBiTree(&T->rchild);
}
}
void PreOrderTraverse(BiTNode *T)
{
if(T!=0)
{
printf("%c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
int main()
{
BiTNode *p;
printf("请按照二叉树的先序遍历输入值,空格代表为空:");
CreateBiTree(p);
PreOrderTraverse(p);
return 0;
}
上面是自己写的,运行有错。
下面是参考案例,可以运行。
#include "stdio.h"
#include "stdlib.h"
typedef char TElemType;
typedef struct xx{
TElemType data;
struct xx *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree *T)
{
char ch;
ch=getchar();
if(ch==' ')*T=NULL;
else
{
*T=(BiTNode *)malloc(sizeof(BiTNode));
if(!(*T))
{
printf("申请失败!\n");
exit(0);
}
(*T)->data=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
void PreOrderTraverse(BiTNode *T)
{
if(T!=0)
{
printf("%c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
int main()
{
BiTNode *p;
printf("请按照二叉树的先序遍历输入值,空格代表为空:");
CreateBiTree(&p);
PreOrderTraverse(p);
return 0;
}
数据结构二叉树的简单遍历问题 #include "stdio.h" #include "stdli
答案:3 悬赏:40 手机版
解决时间 2021-02-01 11:23
- 提问者网友:活着好累
- 2021-01-31 22:13
最佳答案
- 五星知识达人网友:风格不统一
- 2021-01-31 22:48
你传入的指针p,传入的不是p本身,是默认复制了一个副本,所以你main里面的p始终为空。
可以将函数参数改为 &* 指针引用。
或者像例程一样传入 &p
可以将函数参数改为 &* 指针引用。
或者像例程一样传入 &p
全部回答
- 1楼网友:妄饮晩冬酒
- 2021-02-01 00:24
//楼主你好,以下代码经验证运行通过无错。
#include<stdio.h>
#include <malloc.h>
typedef char datatype;
typedef struct BinTNode
{
datatype data;
struct BinTNode *lchild,*rchild;
}BinTNode,*BinTree;
void CreateBinTree(BinTree*T)
{
char ch;
scanf("\n%c",&ch);
getchar();
if(ch=='0')
*T=NULL;
else
{
*T=(BinTree)malloc(sizeof(BinTNode));
(*T)->data=ch;
CreateBinTree(&(*T)->lchild);
CreateBinTree(&(*T)->rchild);
}
}
void InOrderOut(BinTree T)
{
if(T)
{
printf("%c",T->data);
InOrderOut(T->lchild);
InOrderOut(T->rchild);
}
}
int main()
{
BinTree bt;
printf("创建先序遍历序列二插树\n");
CreateBinTree(&bt);
printf("先序遍历的二叉树:");
InOrderOut(bt);
return 0;
}
- 2楼网友:渊鱼
- 2021-01-31 23:57
using namespace std;iostream.h> 是c++中比较通用的,但是98年标准化以后就不那样写了;是c语言中比较通用的;的写法,现在c++全部都是用上面列出的第二种写法;
#include <。
c++原来也兼容#include
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯