Я изучаю python, так как один из моих требований к проекту - печатать двоичное дерево.Печать пути дерева
Я пробовал свой код для печати пути к дереву. Он просто останавливается у корневого узла. Я пытаюсь найти, где я испортился.
Дерево:
A /\ B C //\ D E F
Выход я хочу это:
ABD
ACE
ACF
class Node(object):
def __init__(self, data):
self.data = data
self.children = []
self.val = data
self.left = None
self.right = None
r = Node('A')
r.left = Node('B')
r.right = Node('C')
r.left.left = Node('D')
r.right.right = Node('E')
выше должна быть r.right.left = Node ('E) r.right.right = Node (' F ')
def binaryTreePaths(root):
results = []
c = []
binary_tree_paths(root, c, results)
return results
def binary_tree_paths(root, cand, res):
if root is None:
return
else:
cand.append(str(root.val)+" ")
if root.left is None and root.right is None:
p = ''.join(map(str, cand))
res.append(p)
binary_tree_paths(root.left, cand, res)
binary_tree_paths(root.right, cand, res)
cand.pop()
print binaryTreePaths(r)
If это двоичное дерево, у вас должны быть левые и правые ветви не массивом 'children'. – ozgur
@ozgur - Вы абсолютно правы. Я испортил свой код при инициализации дерева. – paddu
@ozgur. Я исправил код. Тем не менее он печатает только ['A B D', 'A C F'] – paddu