亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么子函數以先序次序生成二叉樹,但運行時并沒有將生成的二叉樹T傳遞呢?

為什么子函數以先序次序生成二叉樹,但運行時并沒有將生成的二叉樹T傳遞呢?

C++ C
開滿天機 2022-01-19 19:15:49
函數代碼如下:#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0#define OVERFLOW -1typedef int Status;typedef char ElemType;typedef struct BitNode{ElemType data;struct BitNode *LChild,*RChild;}BitNode,*BitTree;//生成一個空的二叉樹Status InitBitTree(BitTree T){T = NULL;return OK;}//先序構造二叉樹Status CreateBitTree ( BitTree T ) {ElemType ch; scanf("%c",&ch);if(ch == ' '){T = NULL;}else{T = (BitNode *)malloc(sizeof(BitNode)); if(!T){printf("分配內存空間失敗!");exit(OVERFLOW); }T->data = ch;CreateBitTree(T->LChild );CreateBitTree(T->RChild ); }return OK;}//先序遍歷二叉樹int PreVisit(BitTree T,int (*VisitTree)(ElemType elem)){if(T){if(VisitTree(T->data))if(PreVisit(T->LChild,VisitTree))if(PreVisit(T->RChild,VisitTree))return OK;return ERROR;}elsereturn OK;}//打印輸出二叉樹中的數據int VisitTree(ElemType elem){printf("%3c",elem); return OK;}//主函數int main(){BitTree T;InitBitTree(T);printf("請輸入字符,創建樹:\n");CreateBitTree(T );printf("先序遍歷結果為:\n");PreVisit(T,VisitTree);printf("\n"); return 0;}先序遍歷函數PreVisit() 絕對沒錯,我已反復調試過很多遍,現在把耳朵都調耳鳴了,悲劇啊。。。財富值的話僅剩2點了,望大家不吝賜教!
查看完整描述

2 回答

?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

//先序構造二叉樹
BitTree CreateBitTree(BitTree &T)
{
ElemType ch;
scanf("%c",&ch);
if(ch == ' ')
{
T = NULL;
}
else
{
T = (BitNode *)malloc(sizeof(BitNode));
if(!T)
{
printf("分配內存空間失敗!");
exit(OVERFLOW);
}
T->data = ch;
CreateBitTree(T->LChild );
CreateBitTree(T->RChild );
}
return T;
}



查看完整回答
反對 回復 2022-01-23
?
四季花海

TA貢獻1811條經驗 獲得超5個贊

本身具備遍歷功能,例如:Disp_xian直接調用就行
要想使用PreOrderTraverse函數,必須增加打印輸出函數才能滿足第二個參數是函數指針類型
#includestdio.h

查看完整回答
反對 回復 2022-01-23
  • 2 回答
  • 0 關注
  • 204 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號