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

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

如何根據一個字符串遞歸建立二叉樹?

如何根據一個字符串遞歸建立二叉樹?

九州編程 2019-02-27 17:32:20
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貢獻1877條經驗 獲得超1個贊

tem->left = c2(++s);
tem->right = c2(++s);

構建完左子樹后s的值只是加了1,在遞歸調用中并沒有改變當前的s值。

查看完整回答
反對 回復 2019-03-01
?
肥皂起泡泡

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);
    }
}
查看完整回答
反對 回復 2019-03-01
  • 2 回答
  • 0 關注
  • 526 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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