我认为问题出在你从get_path
调用pre-order
时没有捕获返回值。
对于我来说,以下代码似乎得到了与你的示例代码相同的结果,如果我将值99
更改为其他数字,则会得到None
的返回值。
lftlft = {'val': 3, 'left': None, 'right': {'val': 100, 'left': None, 'right': None}}
rtrt = {'val': 5, 'left': None, 'right': None}
lft = {'val': 2, 'left': lftlft, 'right': {'val': 99, 'left': None, 'right': None}}
rt = {'val': 4, 'left': None, 'right': rtrt}
T = {'val': 1,'left': lft, 'right': rt}
def get_path(root, data, path):
def pre_order(tree, path):
if tree is None:
return
path.append(tree['val'])
if tree['val'] == data:
return path
return pre_order(tree['left'], path[:]) or pre_order(tree['right'], path[:])
desired_result = pre_order(root, [])
return desired_result
print (get_path(T, 99, []))