在这棵树中:
a
/ \
b d
/ / \
c e f
/
g
从根开始的最长路径是a-d-f-g
这是我的尝试:
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)
函数中的树main()
不是我展示的示例。对于这棵树,预期的结果是a-c-f
。这棵树如下图所示:
a
/ \
b c
\
f
现在,我明白了
TypeError: object of type 'NoneType' has no len()
None
由于我有基本案例,我不确定那里是如何出现的。
谢谢!