-
BST_Leetcode_98. Validate Binary Search Tree [swift]알고리즘/알고리즘 문제풀이 2025. 2. 19. 17:56
문제접근
- 모든 노드에 대해 중위순회하며 val을 array.append
- 중복 값을 제거하고, sort하여 기존 값과 비교
이렇게 해서 성능상 문제가 발생하면 다른 구현방법을 사용하려했었다.
근데 문제가 널럴하였음
아래는 다른 구현방법 문제 접근
- (반복문을 통해) 모든 노드에 대해 중위순회 시작. var current: Int에 node.val을 저장할 것
- current와 node.val을 비교, node.val > current이 아니라면, break. else current = node.val
정답코드
더보기/** * Definition for a binary tree node. * public class TreeNode { * public var val: Int * public var left: TreeNode? * public var right: TreeNode? * public init() { self.val = 0; self.left = nil; self.right = nil; } * public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; } * public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) { * self.val = val * self.left = left * self.right = right * } * } */ class Solution { var bin = [Int]() func isValidBST(_ root: TreeNode?) -> Bool { guard let root else { return false } if let lhs = root.left { traversal(to: lhs) } bin.append(root.val) if let rhs = root.right { traversal(to: rhs) } return bin == Array(Set(bin)).sorted() } func traversal(to root: TreeNode) { if let lhs = root.left { traversal(to: lhs) } bin.append(root.val) if let rhs = root.right { traversal(to: rhs) } } }
'알고리즘 > 알고리즘 문제풀이' 카테고리의 다른 글
dijkstra_Leetcode_787. Cheapest Flights Within K Stops [swift] (0) 2025.02.24 BinaryTree_Leetcode_102. Binary Tree Level Order Traversal [swift] (0) 2025.02.24 dijkstra_Leetcode_743. Network Delay Time [swift] (0) 2025.02.19 matrix_Leetcode_48. Rotate Image [swift] (0) 2025.02.19 BinaryTree_Leetcode_543. Diameter of Binary Tree [swift] (0) 2025.02.18