LeetCode 문제 (링크 - click here)를 해결하고있었습니다. 근본적으로 문제는 주어진 이진 트리의 모든 경로를 찾는 것입니다.목록 추가 및 목록 추가와 파이썬에서 변수 목록 범위 차이점
다음과 같은 이진 트리를 고려하십시오.
이# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def binaryTreePaths(self, root):
"""
:type root: TreeNode
:rtype: List[str]
"""
res = []
self.dfs(root, [], res)
a = []
for path in res:
a.append('->'.join([str(i) for i in path]))
return a
def dfs(self, root, ls, res):
if root == None:
return
ls = ls + [root.val]
if not root.left and not root.right: # if it is a leaf
res.append(ls)
if root.left:
self.dfs(root.left, ls, res)
if root.right:
self.dfs(root.right, ls, res)
위에서 언급 한 코드가 잘 작동 - 다음과 같이
1 / \ 2 3 \ 5
내 작업 솔루션입니다. 대신 [[1,2,5],[1,3]]
점점 내가 dfs
호출 후 함수 binaryTreePaths
의 res
을 ls.append(root.val)
하는 ls = ls + [root.val]
변경하면
- 다음 함수
dfs
에서, 전술 한 같은 경우[[],[]]
- 을대로이지만 미묘한 점 I이있다
[[1,3],[1,3]]
이 최종 값이res
이됩니다.
정확히 여기 무슨 일이 일어나고 있습니까?