Реализация бинарного дерева на C ++ - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь создать двоичное дерево c ++. Функция 'init_tree' читает cin и использует эти символы для построения дерева. Но кажется, что эта функция бесполезна. Может кто-нибудь сказать мне, где ошибка и как ее исправить?

#ifndef STUDY_TREE_H
#define STUDY_TREE_H
#include<iostream>
using namespace std;
struct Node {
    char data;
    Node *l_child, *r_child;
};
void init_tree(Node* node) {
    char ch;
    cin >> ch;
    if (ch == '#') {
        node = NULL;
    } else {
        node = new Node;
        std::cout << ch << std::endl;
        node->data = ch;
        init_tree(node->l_child);
        init_tree(node->r_child);
    }
}

int main() {
    std::cout << "Input tree, eg: ABC#D" << std::endl;
    Node *root = NULL;
    init_tree(root);
    return 0;
}
#endif //STUDY_TREE_H

1 Ответ

2 голосов
/ 18 октября 2019

Вы изменяете копию указателя, а не фактический указатель. Используйте ссылку.

void init_tree(Node*& node)
...