Bitte überprüfen Sie meinen Code. Ich kann nicht finden, wo der Fehler ist. Die Frage ist here.Binärer Baumpfad Summe (Python)
Hier ist meine Lösung:
# Given a binary tree, find all paths that sum of the nodes in the path equals to a given number target.
#
# A valid path is from root node to any of the leaf nodes.
# Example
# Given a binary tree, and target = 5:
#
# 1
# /\
# 2 4
# /\
# 2 3
# return
#
# [
# [1, 2, 2],
# [1, 4]
# ]
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
# @param {TreeNode} root the root of binary tree
# @param {int} target an integer
# @return {int[][]} all valid paths
result = []
def binaryTreePathSum(self, root, target):
# Write your code here
if root is None:
return self.result
self.dfs(root, [], target)
return self.result
def dfs(self, node, tmp, target):
tmp.append(node.val)
if node.left is None and node.right is None:
if target == sum(tmp):
#print tmp
self.result.append(tmp)
tmp.pop()
return
if node.left:
self.dfs(node.left, tmp, target)
if node.right:
self.dfs(node.right, tmp, target)
tmp.pop()
if __name__ == "__main__":
root = TreeNode(1)
root.left = TreeNode(2)
root.left.left = TreeNode(2)
root.left.right = TreeNode(3)
root.right = TreeNode(4)
result = Solution().binaryTreePathSum(root, 5)
print result
Nehmen wir an, der Eingang {1,2,4,2,3}, 5
ist. Nach dem Ausführen der Lösung lautet die Ausgabe [[],[]]
. Aber wenn ich die print tmp
Unindent, wird der Ausgang
[1, 2, 2]
[1, 4]
[[],[]]
Der Ausgang des tmp
korrekt ist. Aber es scheint, dass result.append(tmp)
nicht die tmp
in result
anhängen. Ich weiß nicht wo das Problem ist.
1. ich nicht Ihre „Frage“ sehen kann, weil ich kein lintcode Konto habe, und ich bin nicht bereit, erstelle einen. 2. Was um alles in der Welt ist '{1,2,4,2,3}'? Soll das ein Set sein? Denn wenn es eine Menge ist, ist es gleich {1,2,3,4}. 3. * "Nehmen wir an, die Eingabe ist ..." * Die Eingabe für _what_? Wenn Sie diese Parameter an binaryTreepathSum übergeben, wird ein AttributeError ausgelöst. –
Bitte __post den vollständigen Code__ (lass die Leute nicht _guess_, was du versuchst). Überprüfen Sie [\ [SO \]: MCVE] (https://stackoverflow.com/help/mcve) oder [\ [SO \]: Fragen Sie nach] (https://stackoverflow.com/help/how-to- Fragen). Wie auch immer (es tut mir leid, dass der Einzug fehlt, aber in Kommentaren nicht möglich): 'def tree_sum (tree): wenn tree ist None: return 0 else: return tree.val + tree_sum (tree.left) + tree_sum (tree.right) '. – CristiFati
Entschuldigung dafür, ich füge den vollständigen Code und die Frage Beschreibung hinzu. – Bramble