Я пытаюсь написать функцию, которая будет считать три типа узлов в двоичном дереве поиска в Python. Он будет подсчитывать и возвращать общее количество узлов с 0 детьми, 1 ребенком и 2 детьми. Я заметил, что рекурсивный метод будет лучше для этого, а не для итеративного.Количество трех типов узлов в двоичном дереве поиска (рекурсивно)
def node_counts(self):
"""
---------------------------------------------------------
Returns the number of the three types of nodes in a BST.
Use: zero, one, two = bst.node_counts()
-------------------------------------------------------
Postconditions:
returns
zero - number of nodes with zero children (int)
one - number of nodes with one child (int)
two - number of nodes with two children (int)
----------------------------------------------------------
"""
zero, one, two = self._node_counts_aux(self._root)
return zero, one, two
def _node_counts_aux(self, node):
zero, one, two = 0, 0, 0
if node is not None:
if not node._right and not node._left:
zero = 1 # I understand that the problem is here.
if node._left and node._right:
two = 1 + self._node_counts_aux(node._left)[2] + self._node_counts_aux(node._right)[2]
if node._left or node._right:
one = 1 + self._node_counts_aux(node._left)[1] + self._node_counts_aux(node._right)[1]
return zero, one, two
"""
I am testing with this Tree:
36
/\
/ \
6 50
/\ /\
4 17 49 84
///\
12 42 65 85
The output with this code comes to: (0, 6, 4).
"""
Один столбец ошибочен в некотором смысле, но в некотором смысле также прав. Это не мое беспокойство. Моя забота - это нуль, не считающийся. нуль устанавливается как 0, так как я могу это исправить?
Извините, функция называется _node_counts_aux. Его просто вспомогательная функция, которая выполняет рекурсию к основной функции. – user1757703
Вы используете какой-либо класс? –
Класс - это обычное двоичное дерево поиска ADT. Он имеет корень атрибута. Он использует другой класс узлов двоичного дерева поиска, который имеет 3 значения атрибута, слева и справа. Если левое и правое являются в основном указателями на их соответствующие местоположения. – user1757703