Python3의 이진 트리 사전 주문 순회에 대한 반복 솔루션
1855 단어 leetcodetutorialalgorithmspython
문제 설명: 이진 트리의 루트가 주어지면 해당 노드 값의 사전 순회를 반환합니다. 재귀적 솔루션 대신 반복적 솔루션을 제공하십시오.
해결책:
이진 트리에서 선주문 순회는 다음 순서로 발생합니다.
반복적인 솔루션으로 이 문제를 해결하려면 스택 데이터 구조를 구현해야 합니다. 연산이 LIFO(Last In First Out) 순서로 수행되는 비선형 데이터 구조입니다. 답변에 대한 접근 방식은 간단하며 다음과 같습니다.
이 프로세스의 결과 루트 값이 먼저 액세스되고 왼쪽 하위 트리가 그 다음 오른쪽 하위 트리 값이 마지막으로 액세스됩니다.
오른쪽 자식이 먼저 스택에 들어간 다음 왼쪽 자식이 스택에 푸시된다는 점에 유의하는 것이 중요합니다. 이는 스택의 LIFO 특성 때문입니다. 이렇게 하면 오른쪽 자식보다 먼저 왼쪽 자식에 액세스할 수 있습니다.
TALK는 저렴합니다. 코드를 보여주세요:
# Definition of a Binary Tree node
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
output, nodestack = [], [root]
while nodestack:
node = nodestack.pop()
if node: # preorder: root -> left -> right
output.append(node.val)
nodestack.append(node.right)
nodestack.append(node.left)
return output
이 글이 도움이 되었다면 Python에서 더 많은 DSA 콘텐츠를 보려면 내 뉴스레터를 좋아하고 구독하십시오.
Reference
이 문제에 관하여(Python3의 이진 트리 사전 주문 순회에 대한 반복 솔루션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/damiansketch/an-iterative-solution-to-binary-tree-pre-order-traversal-in-python3-2jdd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)