leetcode 질문을 연습하고 있으며 변수를 업데이트하는 데 문제가 있습니다. 내 참조를 올바르게 전달하지 않을 것 같습니다. 대답은 3이 될 것으로 기대하지만 1을 얻고 있습니다. 코드를 실행하고 대답 3이 달성되었지만 다시 돌아와서 1을 얻습니다.Python에서 참조로 변수 전달
목표는 가장 길게 찾습니다. 이진 트리에서 노드의 연속적인 체인.
예 :
1
\
3
/\
2 4
\
5
답변이 될 것입니다 3 -> 아래
3,4,5가 실행 가능한 코드 :
class Node(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution(object):
def DFS(self, root):
count = 0
if root:
count += 1
q = [root]
while q:
n = q.pop()
T = 0
if n.left:
if n.left.val == n.val + 1:
q.append(n.left)
T = 1
if n.right:
if n.right.val == n.val + 1:
q.append(n.right)
T = 1
if T:
count += 1
return count
def longestConsecutive(self, root, count=0):
"""
:type root: TreeNode
:rtype: int
"""
c = count
if root:
c = max(c, self.DFS(root))
self.longestConsecutive(root.left, c)
self.longestConsecutive(root.right, c)
return c
a = Node(1)
b = Node(3)
c = Node(2)
d = Node(4)
e = Node(5)
a.right = b
b.left = c; b.right = d
d.right = e
poop = Solution()
print(poop.longestConsecutive(a))
문제와 관련된 모든 관련없는 논리를 전혀 사용하지 않고 최소한의 문제를 생성하면 더 빠르고 더 빨리 답변을 얻을 수 있습니다. DFS 구현에 대해 확신이 서지 않으면 별도의 질문으로 게시하십시오. – slezica
Python에서 참조로 변수를 전달할 수 없습니다. 실제로 변수를 전혀 전달하지 않습니다. 객체를 전달할 수 있습니다. – user2357112
기술적으로, 파이썬은 참조에 의한 전달 의미를 지원하지 않습니다. –