Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 이진트리
- Depth-first Search
- matrix
- 문자열
- list
- binary tree
- DP
- linked list
- dfs
- 미디움
- tree
- leetcode
- backtracking
- Array
- HashTable
- 재귀
- string
- 중간
- Python
- two pointers
- hash table
- binary search
- math
- sorting
- 리트코드
- 쉬움
- recursive
- Binary
- easy
- Medium
Archives
- Today
- Total
부부의 코딩 성장 일기
LeetCode 145(Binary Tree Postorder Traversal, Python) 본문
1. 문제 링크
Binary Tree Postorder Traversal - LeetCode
Can you solve this real interview question? Binary Tree Postorder Traversal - Given the root of a binary tree, return the postorder traversal of its nodes' values. Example 1: [https://assets.leetcode.com/uploads/2020/08/28/pre1.jpg] Input: root = [1,nu
leetcode.com
2. 문제 설명
- 트리 순회 위키피디아 트리 순회 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
- 주어진 트리를 후위 순회한 결과를 리스트로 반환할 것
- 전위 순회(preorder traversal)
- 부모 → 왼쪽 서브 트리 → 오른쪽 서브 트리
- 중위 순회(inorder traversal)
- 왼쪽 서브 트리 → 부모 → 오른쪽 서브 트리
- 후위 순회(postorder traversal)
- 왼쪽 서브 트리 → 오른쪽 서브 트리 → 부모
3. 풀이
- 재귀 함수 사용
- node가 None이면 [] 반환
- None 아니면 왼쪽 서브 트리와 오른쪽 서브 트리에 재귀 함수 걸어 결과를 더한 후 root.val을 리스트에 넣는 것을 반복
# Definition for 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 postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
if not root:
return []
return self.postorderTraversal(root.left)+self.postorderTraversal(root.right)+[root.val]
4. 배운 점
- 이진 트리를 순회하는 방법들
- 전위 순회(Preorder Traversal):
- 루트 노드를 먼저 방문하고, 그 다음에 왼쪽 서브트리를 전위 순회하고, 마지막으로 오른쪽 서브트리를 전위 순회합니다.
- 방문 순서: 루트 -> 왼쪽 서브트리 -> 오른쪽 서브트리
- 중위 순회(Inorder Traversal):
- 왼쪽 서브트리를 중위 순회한 뒤에 루트 노드를 방문하고, 마지막으로 오른쪽 서브트리를 중위 순회합니다.
- 방문 순서: 왼쪽 서브트리 -> 루트 -> 오른쪽 서브트리
- 후위 순회(Postorder Traversal):
- 왼쪽 서브트리를 후위 순회한 뒤에 오른쪽 서브트리를 후위 순회하고, 마지막으로 루트 노드를 방문합니다.
- 방문 순서: 왼쪽 서브트리 -> 오른쪽 서브트리 -> 루트
- 전위 순회(Preorder Traversal):
- 레벨 순회(Level Order Traversal):
- 각 레벨 순서대로 노드를 방문합니다. 즉, 루트에서부터 각 레벨의 왼쪽에서 오른쪽 순서대로 노드를 방문합니다.
- 예시)
A
/ \
B C
/ \
D E
#전위 순회: A -> B -> D -> E -> C
#중위 순회: D -> B -> E -> A -> C
#후위 순회: D -> E -> B -> C -> A
#레벨 순회: A -> B -> C -> D -> E
'Algorithm > LeetCode' 카테고리의 다른 글
LeetCode 160(Intersection of Two Linked Lists, Python) (1) | 2023.12.03 |
---|---|
LeetCode 144(Binary Tree Preorder Traversal, Python) (0) | 2023.12.02 |
LeetCode 136(Single Number, Python) (0) | 2023.11.30 |
LeetCode 141(Linked List Cycle, Python) (0) | 2023.11.29 |
LeetCode 125(Valid Palindrome, Python) (2) | 2023.11.28 |