In this tree:
a
/ \
b d
/ / \
c e f
/
g
The longest path starting from the root would be a-d-f-g
Here is my attempt:
class Node:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def print_path(root):
if not root:
return []
if root.left is None:
return [root.val].append(print_path(root.right))
elif root.right is None:
return [root.val].append(print_path(root.left))
elif (root.right is None) and (root.left is None):
return [root.val]
else:
return argmax([root.val].append(print_path(root.left)), [root.val].append(print_path(root.right)))
def argmax(lst1, lst2):
return lst1 if len(lst1) > len(lst2) else lst2
if __name__ == '__main__':
root_node = Node('a')
root_node.left = Node('b')
root_node.right = Node('c')
root_node.right.right = Node('f')
print print_path(root_node)
The tree in the main()
function is not the example I have shown. For this tree the expected results would be a-c-f
. This tree is shown below:
a
/ \
b c
\
f
Right now, I get
TypeError: object of type 'NoneType' has no len()
I'm not sure how None
is showing up there since I have base cases.
Thanks!