Функция для печати BST в C ++ - PullRequest
0 голосов
/ 03 июня 2018

Привет, я ищу помощь, чтобы написать как можно проще для меня, чтобы понять функцию для печати BST красивым способом.Например,

  50
 /  \
30  70

Вот мой код, который добавляет элементы в дерево:

#include <iostream>

using namespace std;

struct node
{
    int key;
    struct node *left;
    struct node *right;
};
struct node *root;

struct node *make_leaf(int new_data);
struct node *add_node(struct node* root, int key);

int main()
{
   node *root = NULL;
   int new_element, how;
   cout<<"How many elements?"<<endl;
   cin>>how;
   for(int i=0; i<how; ++i){
   cout<<"Enter element value"<<endl;
   cin>>new_element;
   root = add_node(root, new_element);
   }
return 0;
}
struct node* make_leaf(int new_data){
       node *nd=new node;
       nd->key=new_data;
       nd->left=NULL;
       nd->right=NULL;
       return nd;

}
struct node *add_node(struct node* root, int key){
    if (root==NULL)
    {
        return make_leaf(key);
    }
    else
    {
        if (root->key > key)
        {
            root->left = add_node(root->left, key);
        }
        else
        {
            root->right = add_node(root->right, key);
        }
    }
    return root;
 }

Я ищу помощь, но я начинаю свое приключение с программированием, поэтому, пожалуйста, не сердитесьна меня :) Спасибо!

РЕДАКТИРОВАТЬ

Я пробовал функцию ниже, но она не записывает корень узла вверху, как этодолжно быть: /

void postorder(struct node * root, int indent)
{
    if(root != NULL) {

        if(root->right) {
            postorder(root->right, indent+4);
        }
        if (indent) {
            cout << setw(indent) << ' ';
        }
        if (root->right) cout<<" /\n" << setw(indent) << ' ';
        if(root->left) {
            cout << setw(indent) << ' ' <<" \\\n";
            postorder(root->left, indent+4);
        }
    }

}

1 Ответ

0 голосов
/ 03 июня 2018

новое зарезервированное ключевое слово.пожалуйста, измените имя переменной "new" на что-то другое.

изменив new на new1, скомпилируйте вашу программу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...