반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[LeetCode] 99 | Recover Binary Search Tree | Python 본문
728x90
반응형
문제 링크: https://leetcode.com/problems/recover-binary-search-tree/
문제
You are given the root of a binary search tree (BST), where the values of exactly two nodes of the tree were swapped by mistake. Recover the tree without changing its structure.
조건
- The number of nodes in the tree is in the range [2, 1000].
- $-2^{31}$ <= Node.val <= $2^{31}$ - 1
내 풀이
BST는 iterative로 푸는 것이 편하다.
모든 노드를 돌아다니며 BST의 특성에 맞게 잘 되어있는지 확인하고, 특성에 맞지 않는 것이 있다면 그 노드를 저장한다.
문제에서 특성에 맞지 않는 노드는 무조건 두 개라고 했으니 두 개가 나온다면 그 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 recoverTree(self, root: Optional[TreeNode]) -> None:
"""
Do not return anything, modify root in-place instead.
"""
self.prev = TreeNode(-float('inf'))
self.change1, self.change2 = None, None
self.get2nodes(root)
self.change1.val, self.change2.val = self.change2.val, self.change1.val
def get2nodes(self, root):
if root:
self.get2nodes(root.left)
if self.prev.val > root.val:
if not self.change1:
self.change1 = self.prev
self.change2 = root
self.prev = root
self.get2nodes(root.right)
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[LeetCode] 705 | Design HashSet | Python (0) | 2022.04.21 |
---|---|
[LeetCode] 173 | Binary Search Tree Iterator | Python (0) | 2022.04.20 |
[LeetCode] 230 | Kth Smallest Element in a BST | Python (0) | 2022.04.18 |
[LeetCode] 669 | Trim a Binary Search Tree | Python (0) | 2022.04.15 |
[LeetCode] 700 | Search in an Binary Search Tree | Python (0) | 2022.04.14 |
Comments