문제 링크 : https://leetcode.com/problems/binary-tree-inorder-traversal/
처음에 테.케만 보고 그냥 배열에 넣으면 되는 줄 알았는데..
# 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]:
out = []
if root is None :
return 0
for i in range(len(root)):
out.append(root[i])
return out
결과:
TypeError: object of type 'TreeNode' has no len()
for i in range(len(root)):
Line 13 in inorderTraversal (Solution.py)
ret = Solution().inorderTraversal(param_1)
Line 37 in _driver (Solution.py)
_driver()
Line 48 in <module> (Solution.py)
구글링을 했는데
트리 순회 방식중에서 in-order방식을 활용하여 탐색하라는 것이었다...
참고 ; https://lgphone.tistory.com/93
in-order방식은 left를 먼저 탐색한 뒤 - 노드- 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]:
reuslt = []
def dfs(node):
if node is not None:
dfs(node.left)
reuslt.append(node.val)
dfs(node.right)
dfs(root)
return reuslt
다음과 같다..
다음에 다시 한번 풀어봐야겠다.