Построить двоичное дерево поиска из входной последовательности действительных чисел. Отобразите значения в узлах, уровень которых указан пользователем. Я не могу понять, каков принцип нахождения значений и алгоритм. Как написать функцию для такого алгоритма
#include <iostream>
using namespace std;
struct Node
{
int data;
Node *left;
Node *right;
};
Node *root = NULL;
void InsertNode(int x, Node *leaf)
{
Node *new_node = new Node;
new_node->data = x;
new_node->left = NULL;
new_node->right = NULL;
if (leaf == NULL)
root = new_node;
else
if (x < leaf->data)
if (leaf->left != NULL)
InsertNode(x, leaf->left);
else
leaf->left = new_node;
else
if (x >= leaf->data)
if (leaf->right != NULL)
InsertNode(x, leaf->right);
else
leaf->right = new_node;
}
int main()
{
int x, n = 0;
cout << "Enter 10 numbers" << endl;
for (int i = 0; i < 10; i++)
{
cin >> x;
InsertNode(x, root);
}
system("pause");
return 0;
}
Как отобразить узлы текущего уровня на основе моей структуры
struct Node
{
int data;
Node *left;
Node *right;
};
Node *root = NULL;