Мое представление двоичного дерева
Код: Выделить всё
1
/ \
2 3
/ \ / \
4 5 6 7
\
8
Код: Выделить всё
# left view method
class Node:
def __init__(self, val):
self.left = None
self.right = None
self.data = val
class Leftview:
def view(self, root):
out = []
maxlevel = [-1]
self._helperrecur(root, 0, maxlevel, out)
for i in range(len(out)):
print(out[i], end=' ')
def _helperrecur(self, root, level, maxlevel, out):
#base condition
if root is None:
return
#main condition
if level > maxlevel[0]:
out.append(root.data)
maxlevel[0] = level
#recursive through tree
self._helperrecur(root.left, level+1, maxlevel, out)
self._helperrecur(root.right, level+1, maxlevel, out)
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.right.left = Node(6)
root.right.right = Node(7)
root.right.left.right = Node(8)
lf = Leftview()
lf.view(root)
Исключенный результат: 1, 3, 7, 8
Мой результат: 1, 3, 7, 8
код здесь,
Код: Выделить всё
self._helperrecur(root.right, level+1, maxlevel, out)
self._helperrecur(root.left, level+1, maxlevel, out)
Подробнее здесь: https://stackoverflow.com/questions/790 ... ing-python