Некорректный вывод двоичного дерева поиска
Можете помочь с написанием рекурсивной функции для вывода двоичного дерева , пытался сделать как на этом скрине , при выводе вроде получается первые два числа , но все равно неправильно
#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;
}
