4 回答
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
C語(yǔ)言和C++標(biāo)準(zhǔn)庫(kù)都不提供對(duì)數(shù)據(jù)結(jié)構(gòu)的支持. C++的標(biāo)準(zhǔn)模板庫(kù)提供對(duì)一些數(shù)據(jù)結(jié)構(gòu)的支持.
樹(shù)是一種比較基本的數(shù)據(jù)結(jié)構(gòu), 建樹(shù)和遍歷可以用遞歸實(shí)現(xiàn), 但一般不推薦用遞歸, 可以用循環(huán)+棧完成.
TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
大多數(shù)問(wèn)題是函數(shù)名字寫(xiě)錯(cuò) 了。
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int Status;
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status CreateBitree(BiTree T);
Status PreOrder(BiTree T);
Status InOrder(BiTree T);
Status CreateBitree(BiTree 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);
}
return OK;
}
Status PreOrder(BiTree T)
{
if(T){
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
return OK;
}
Status InOrder(BiTree T)
{
if(T){
InOrder(T->lchild);
printf("%c",T->data);
InOrder(T->rchild);
}
return OK;
}
Status PostOder(BiTree T)
{
if(T){
PostOder(T->lchild);
PostOder(T->rchild);
printf("%c",T->data);
}
return OK;
}
int main()
{
BiTree T={'\0'};
printf("先序建樹(shù):依次輸入二叉樹(shù)結(jié)點(diǎn)號(hào),孩子為空時(shí)輸入空格\n");
CreateBitree(T);
printf("\n先序遍歷二叉樹(shù)為:");
PreOrder(T);
printf("\n中序遍歷二叉樹(shù)為:");
InOrder(T);
printf("\n后序遍歷二叉樹(shù)為:");
PostOder(T);
return 0;
}
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
#include"stdio.h"
#include"malloc.h"
typedef struct bitnode
{
char data;
struct bitnode *lchild,*rchild;
}bintnode,*bintree;
bintree createbitree()
{
bintree t;
char ch;
scanf("%c",&ch);
if(ch==' ')
t=NULL;
else
{
t=(bintnode *)malloc(sizeof(bintnode));
t->data=ch;
t->lchild=createbitree();
t->rchild=createbitree();
}
return(t);
}
這就是建樹(shù)的函數(shù) 要實(shí)現(xiàn)什么你自己在寫(xiě)。。。
- 4 回答
- 0 關(guān)注
- 1361 瀏覽
添加回答
舉報(bào)
