Некорректный вывод двоичного дерева поиска

Можете помочь с написанием рекурсивной функции для вывода двоичного дерева , пытался сделать как на этом скрине , при выводе вроде получается первые два числа , но все равно неправильно

#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
int tabs = 0;
struct Node
{
    int x;
    Node* xLeft, * xRight;
};

void Print(Node* q)
{
    if (!q) return; 
    tabs += 5; 
    

    Print(q->xLeft); 

    for (int i = 0; i < tabs; i++) cout << " "; 
    cout << q->x << endl; 


    Print(q->xRight);

    tabs -= 5; 
    return;
}
void CheckOnSimilarity(int *elements, int& index, int k)// устранение одинаковых элементов массива
{
    for (int i = 0; i < index; i++)
    {
        while (elements[i] == k)// до тех пор , пока j-ый эл-т равен хотя бы одному предшествующему эл-ту 
        {// рандомизировать до того момента , когда он будет отличаться
            k = 100 + rand() % 899;
        }
    }
}
void addNode(int x,Node *&MyTree)
{
    if (MyTree == nullptr) 
    {
        MyTree = new Node;
        MyTree->x = x;
        MyTree->xLeft = MyTree->xRight = nullptr;
        return;
    }
    else  
    {
        
        
        if (MyTree->xLeft != nullptr)
        {
            addNode(x, MyTree->xLeft);
        }
        else
        {
            addNode(x, MyTree->xRight);
        }
    
    
    }

}
void ShowRevRLN()
{




}
void del(Node*& Tree) 
{
    if (Tree != NULL)                
    {
        del(Tree->xLeft);                
        del(Tree->xRight);                
        delete Tree;                 
        Tree = nullptr;                 
    }
}
int main()
{
    // сгенерировать 25 неповторяющихся чисел
    // вывести их на экран 
    //построить поисковое дерево
    //вывести на экран это дерево
    //вывести на экран последовательность вершин, соответсвующую обратному прохождению дерева с приоретом направо
    Node* Tree = nullptr;


    srand(time(NULL));
    int amount = 25;// по заданию
    int* elements = new int[amount];
    for (int i = 0; i < amount; i++)
    {
        elements[i] = 100 + rand() % 899;
        CheckOnSimilarity(elements, i, elements[i]);
    }
    
    for (int i = 0; i < amount; i++)
    {
        cout << elements[i] << " ";
    }
    cout << endl;
    for (int i = 0; i < amount; i++) 
    {
        addNode(elements[i], Tree);
    }
    cout << endl;
    Print(Tree);
    cout << endl;
    
    
    del(Tree);
    return 0;
}




Ответы (0 шт):