Задать вопрос
@barakuda1

Почему не выводится максимальное значение листа бинарного дерева?

Выводит следующее:

62a07dd4f3286696202827.png

/**
     * Простое двоичное дерево поиска (BST)
     * @constructor
     */
         // Определение узла
    function Node(data, left, right) {
             this.data = data; // данные
             this.left = left; // левый узел
             this.right = right; // правый узел
             this.show = show; // Отображаем данные узла
    }
 
         // Класс двоичного дерева
    function BST() {
             this.root = null; // корневой узел
             this.insert = insert; // Вставляем узел
             this.preOrder = preOrder; // обход предварительного заказа
             this.find = find; // найти узел
             this.getMax = getMax; // находим максимальное значение

    }
 
         // Отображение данных узла
    function show() {
      return this.data
    }

    function insert(data) {
      var n = new Node(data, null, null)
      if (this.root === null) {
        this.root = n
      } else {
        var current = this.root
        var parent
        while (true) {
          parent = current
          if (data < current.data) {
            current = current.left
            if (current === null) {
              parent.left = n
              break
            }
          } else {
            current = current.right
            if (current === null) {
              parent.right = n
              break
            }
          }
        }
      }
    }
 
         // Обход первого порядка
    function preOrder(node) {
      if (node !== null) {
        console.log(node.show())
        preOrder(node.left)
        preOrder(node.right)
      }
    }

         // Находим узел
    function find(data) {
      var current = this.root
      while (current !== null) {
        if (current.data === data) {
          return current
        } else if (data < current.data) {
          current = current.left
        } else {
          current = current.right
        }
      }
      return null
    }

         // Находим максимальное значение
    function getMax(root) {
      var current = this.root || root
      while (current.right !== null) {
        current = current.right
      }
      return current
    }

    var bst = new BST()
    bst.insert(23);
    bst.insert(45);
    bst.insert(16);
    bst.insert(37);
    bst.insert(99);
    bst.insert(22);
    bst.preOrder(bst.root)

    console.log(bst)
    console.log('Максимум ->' + bst.getMax(bst.root))
  • Вопрос задан
  • 32 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
console.log('Максимум ->' + bst.getMax(bst.root).data)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
neuotq
@neuotq
Прокрастинация
Здесь у вас происходит объединение строк и js преобразует возвращаемое значение bst.getMax в строку, через вызов toString. Напишите свое преобразование, тогда будет работать как вы ожидаете, либо выводите конкретные данные (.data)
console.log('Максимум ->' + bst.getMax(bst.root))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 дек. 2024, в 09:41
5000 руб./за проект
23 дек. 2024, в 09:39
1000000 руб./за проект