node *c2(char *s){
node *tem;
if(*s == '#' || *s == '\0') tem = NULL;
else{
tem = (node*)malloc(sizeof(struct node));
tem->data = *s;
tem->left = NULL;
tem->right = NULL;
tem->left = c2(++s);
tem->right = c2(++s);
}
return tem;
}
s是一個字符數組,這樣建樹有錯嗎?為什么輸出的結果不對呢?謝謝大家
2 回答

肥皂起泡泡
TA貢獻1829條經驗 獲得超6個贊
tem->left = c2()
這種寫法并沒讓樹節點真正鏈接起來。
改成這樣吧
typedef struct BiTNode {
char data;
struct BiTNode *left, *right;
}BiTNode, *BiTree;
void createBiTree(BiTree &T) {
char el = *s++;
if (el == '#' || el == '\0') {
T = NULL;
} else {
T = (BiTNode *)malloc(sizeof(BiTNode));
T->data = el;
createBiTree(T->left);
createBiTree(T->right);
}
}
添加回答
舉報
0/150
提交
取消