#include<stdio.h>
#include<stdlib.h>
#include<malloc>
typedef char ElemType;
typedef struct BiTNode{
ElemType data;
struct BiTNode *lchild,*rchild;
}
BiTNode,*BiTree;
Status CreateBiTree(BiTree &T){
ElemType data;
scanf("%c",&data);
if('^'==data) T=NULL;
else{
if(!(T=(BiTree)malloc(sizeof(BiTNode)))) exit(OVERFLOW);
T->data=https://bbs.csdn.net/topics/data;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return ok;}
Status PreOderTraverse(BiTree T,Status(*Visit)(ElemType e)){
if(T)
{ if(Visit(T->data)) if(PreOderTraverse(T->lchild,Visit) if(PreOderTraverse(T->rchild,Visit)
return ok;
return error;
}else return ok;}
Status InOderTraverse(BiTree T,Status(*Visit)(ElemType e)){
if(T){
if(Visit(T->data))
if(InOderTraverse(T->lchild,Visit)
if(Visit(T->data)) if(InOderTraverse(T->rchild,Visit)
return ok;
return error;
}else return ok;
}
Status PostOderTraverse(BiTree T,Status(*Visit)(TElemType e)){ if(T){ if(PostOderTraverse(T->lchild,Visit) if(PostOderTraverse(T->rchild,Visit) if(Visit(T->data))
return ok;
return error;
} else return ok;
}int main()
{void Test(BiTree &T)
{ CreateBiTree(&T);
printf("PreOrderTraverse is : "); PreOrder(T,PrintElement);
printf("\n");
printf("InOrderTraverse is : ");
InOrder(T,PrintElement);
printf("\n");
printf("PostOrderTraverse is : "); PostOrder(T,PrintElement));
printf("\n");
}return ok;
}
uj5u.com熱心網友回復:
那么到底是什么問題呢?uj5u.com熱心網友回復:
我覺得:第二個中序遍歷應該是這樣的:Status InOderTraverse(BiTree T,Status(*Visit)(ElemType e)){
if(T){
if(InOderTraverse(T->lchild,Visit)
if(Visit(T->data))
if(Visit(T->data)) if(InOderTraverse(T->rchild,Visit)
return ok;
return error;
}else return ok;
}
uj5u.com熱心網友回復:
頭檔案提示有錯,malloc那里的。??????????
uj5u.com熱心網友回復:
好的,謝謝喔。我回去再運行一下下
uj5u.com熱心網友回復:
你這個應該是C語言,頭檔案要加上.h
uj5u.com熱心網友回復:
那么到底是什么問題呢?
頭檔案提示有錯,malloc那里的。?????
你這個應該是C語言,頭檔案要加上.h
加了.h錯誤的條數又多了幾個,我覺得應該是我哪里有錯了。
得再看看才行
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/122557.html
標籤:疑難問題
上一篇:敬畏生命
