Как отобразить узлы текущего уровня? - PullRequest
1 голос
/ 06 апреля 2020

Построить двоичное дерево поиска из входной последовательности действительных чисел. Отобразите значения в узлах, уровень которых указан пользователем. Я не могу понять, каков принцип нахождения значений и алгоритм. Как написать функцию для такого алгоритма


#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;

1 Ответ

0 голосов
/ 06 апреля 2020

Как на счет этого

void print_level(Node *root, int level)
{
  if (! level)
    cout << root->data;
  else
  {
    print_level(root->left, level - 1);
    print_level(root->right, level - 1);
  }
}

, а затем просто вызовите функцию

print_level(root, 3);

, которая напечатает все узлы на глубине 3. (Предполагая, что узел root находится на уровень 0.)

...