https://leetcode.com/problems/binary-tree-postorder-traversal/
Binary Tree Postorder Traversal - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
이게 easy라고..?
저번 inorder traversal에 이어서 전혀 easy하지 않은데..ㅠㅠㅠㅠ (https://leetcode.com/problems/binary-tree-inorder-traversal/)
class Solution:
# @param {TreeNode} root
# @return {integer[]}
def postorderTraversal(self, root):
traversal, stack = [], [(root, False)]
while stack:
node, visited = stack.pop()
if node:
if visited:
# add to result if visited
traversal.append(node.val)
else:
# post-order
stack.append((node, True))
stack.append((node.right, False))
stack.append((node.left, False))
return traversal
이건 솔루션에 있던거긴 한데 나도 생각한 방법, 가장 직관적이고 쉬운 방법
class Solution:
# @param {TreeNode} root
# @return {integer[]}
def postorderTraversal(self, root):
traversal, stack = [], [root]
while stack:
node = stack.pop()
if node:
# pre-order, right first
traversal.append(node.val)
stack.append(node.left)
stack.append(node.right)
# reverse result
return traversal[::-1]
이건 어떻게 이런 창의성을 발휘하나 싶었던 방법
inorder : left -> me -> right
preorder : me -> left -> right
postorder : left -> right -> me
지금 하려는건 postorder, 그러니까 left -> right -> me인데
이걸 뒤집으면 me -> right -> left, 그니까 right subtree first preorder traversal이 된다.
만들어서 리스트를 뒤집어주면 된다.. 와 ㅋㅋㅋㅋ
'코딩 테스트 및 알고리즘 > leetcode for google' 카테고리의 다른 글
| leetcode : Bag of tokens (0) | 2022.09.13 |
|---|---|
| leetcode : Binary Tree Inorder Traversal (0) | 2022.09.11 |
| leetcode : N-ary Tree Preorder Traversal (0) | 2022.09.11 |
| leetcode : Binary Tree Preorder Traversal (0) | 2022.09.11 |
| leetcode : Linked List Cycle (0) | 2022.09.11 |