я получил вывод как объект для двоичного дерева, как я могу получить значения этого объекта в массив, чтобы продолжить дальнейшую проблему - PullRequest
0 голосов
/ 27 сентября 2019

Постановка задачи Вам дано дерево с N узлами с корнем в 1. Каждый из N узлов имеет некоторое специальное число Se, связанное с ним.Каждый узел также имеет определенную силу.Мощность каждого узла дерева определяется как количество тяжелых узлов в поддереве узла (включая этот узел).Тяжелый узел - это узел, у которого сумма делителей его специального числа кратна 3. Вам задается Q запросов
Существует два типа запросов: Тип 1: Обновление специального номера узла.Тип 2: укажите мощность определенного узла.

Формат ввода

Первая строка: два разделенных пробелом целых числа N и Q, обозначающие количество узлов в дереве и числозапросов соответственно. Каждая из следующих N-1 строк: два разделенных пробелом целых числа U и V, обозначающие грань между ними.Следующая строка: N разделенных пробелом целых чисел, i из которых обозначает специальное число, относящееся к узлу i.Первое целое число в следующих Q строках - T (тип запроса).если T равен 1, за ним следуют 2 целых числа X, а Y, обозначающий специальное число S узла X, должно быть обновлено до Y, если T равно 2, за ним следует одно целое число X

Формат вывода

Для каждого запроса типа 2 выведите мощность данного узла X. Ответ на каждый запрос должен быть в новой строке

Объяснение моей постановки задачи По сути, у нас есть дерево с пронумерованными узлами (Si).Некоторые из этих узлов предположительно имеют дочерние элементы (поскольку это дерево).

Вопрос, который задается, заключается в том, чтобы найти «мощность» узла, где мощность определяется как число «тяжелых узлов» вэто дети.

«Тяжелый узел» определяется как узел, у которого сумма Si делителей для Si кратна 3.

Существует куча информации, которую нам нужно вычислитьздесь:
* Для данного узла нам нужно получить все его дочерние узлы
* Для каждого дочернего узла нам нужно найти делители для номера этого узла
* Нам нужно сложить делители иопределить, является ли оно кратным 3

для данного примера ввода и вывода, например

выборки ввода

5 5

1 2

1 3

3 4

3 5

16 8 17 3 18

2 1

2 3

1 3 7

2 1

2 3

образец вывода

3

2

2

1

Код thя пытался

function BinarySearchTree() {
  this.root = null;
}

BinarySearchTree.prototype.insertNode = function (val) {
  var node = {
    data : val, 
    left : null, 
    right : null
  };

  var currentNode;

  if (!this.root) {
    this.root = node;
  } else {
    currentNode = this.root;
    while (currentNode) {
      if (val < currentNode.data) {
          if (!currentNode.left) {
            currentNode.left = node;
            break;
          } else {
            currentNode = currentNode.left;
          }
      } else if (val > currentNode.data) {
        if (!currentNode.right) {
          currentNode.right = node;
          break;
        } else {
          currentNode = currentNode.right;
        }
      } else {
        break;
      }
    }    
  }
};

var BST = new BinarySearchTree();

BST.insertNode(16);
BST.insertNode(8);
BST.insertNode(17);
BST.insertNode(3);
BST.insertNode(18);

console.log(BST);

мой вывод

BinarySearchTree {
  root:
   { data: 16,
     left: { data: 8, left: [Object], right: null },
     right: { data: 17, left: null, right: [Object] } } }

Теперь я хочу передать эти данные в массив, как [16,8,17,3,18]

и хотите найти делители каждого узла и проверить, делятся ли делители на 3 или нет. Как это сделать

- это правильный путь?

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