작심삼일

[LeetCode] 94 | Binary Tree Inorder Traversal | Python 본문

스터디/코테

[LeetCode] 94 | Binary Tree Inorder Traversal | Python

yun_s 2022. 9. 8. 09:27
728x90
반응형

문제 링크: https://leetcode.com/problems/binary-tree-inorder-traversal/


문제

Given the root of a binary tree, return the inorder traversal of its nodes' values.


조건

  • The number of nodes in the tree is in the range [0, 100].
  • -100 <= Node.val <= 100

내 풀이

Tree 구조를 탐색할 때는 dfs로 recursive하게 하면 된다.

Inorder라는 것은 node와 node.left, node.right가 있을 때 node.left $\rightarrow$ node $\rightarrow$ node.right 순서로 진행하는 것이다.

그래서 recursive하게 탐색을 inorder(root.left) $\rightarrow$ ans.append(root.val) $\rightarrow$ inorder(root.right) 순서대로 하면 된다.


코드

# 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 inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        ans = []
        
        def inorder(root):
            nonlocal ans
            
            if not root:
                return
            
            inorder(root.left)
            ans.append(root.val)
            inorder(root.right)
            
        inorder(root)
        
        return ans
728x90
반응형
Comments