Удалить рекурсивно из BST

ES6 предоставляет метод Array.from() , который создает новый экземпляр Array из объекта, подобного массиву или итерации.

let boxes = document.getElementsByClassName('box');

Array.from(boxes).forEach(v => v.style.background = 'green');
console.log(Array.from(boxes));
.box {
  width: 50px;
  height: 50px;
  margin: 5px;
  background: blue;
  display: inline-block;
}

Как вы можете видеть внутри фрагмента кода, после использования функции Array.from() вы можете манипулировать каждым элементом.

Это же решение с использованием jQuery.

$('.box').css({'background':'green'});
.box {
  width: 50px;
  height: 50px;
  margin: 5px;
  background: blue;
  display: inline-block;
}

0
задан Sachihiro Takamori 22 March 2019 в 17:09
поделиться

1 ответ

В будущем попытайтесь выполнить некоторую отладку и предоставить пример выходных данных и ожидаемый результат.

Рассмотрим ниже

def _remove(self, key, node):
        if node == None:
            return None
        if key == node.key:
            if node.left and not node.right:  # only left
                return node.left
            elif node.right and not node.left: # only right
                return node.right
            elif not node.right and not node.left: # neither
                return None
            else : # both
                inorder_successor = node.right
                while inorder_successor.left:
                    inorder_successor = inorder_successor.left
                # remember to replace inorder_successor with it's right child
                ...
                ...
                return inorder_successor

        # iterates recursively in the bst
        elif key <= node.key:
            node.left = self._remove(key, node.left)
        else:
            node.right = self._remove(key, node.right)

        return node

Несколько замечаний о том, что изменилось

  1. Вы проверяете на None, используя is != None, что очень непитонно. Просто проверьте вместо is и is not
  2. . Правильный способ замены узла в BST, у которого есть оба потомка, - это преемник по порядку следования (самый левый потомок правого потомка удаленного узла) [ 116]
0
ответ дан Srini 22 March 2019 в 17:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: