-
BinaryTree_LeetCode_230. Kth Smallest Element in a BST [swift]알고리즘/알고리즘 문제풀이 2025. 2. 25. 17:59
문제 접근
BST이므로, 중위순회하면 오름차순 정렬이 된다.
array에 저장하여, count == k 일 때 마지막 element를 반환한다.
정답코드
더보기더보기더보기/** * 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 ascending = [Int]() func kthSmallest(_ root: TreeNode?, _ k: Int) -> Int { guard let root else { return 0 } if let lhs = root.left, ascending.count != k { traversal(lhs, k: k) } if ascending.count != k { ascending.append(root.val) } if let rhs = root.right, ascending.count != k { traversal(rhs, k: k) } return ascending.last! } func traversal(_ node: TreeNode, k: Int) { guard ascending.count != k else { return } if let lhs = node.left, ascending.count != k { traversal(lhs, k: k) } if ascending.count != k { ascending.append(node.val) } if let rhs = node.right, ascending.count != k { traversal(rhs, k: k) } } }
다른 코드
고수의 코드는 도중에 멈추는 조건없이 모든 노드를 전부 순회하였다.
'알고리즘 > 알고리즘 문제풀이' 카테고리의 다른 글
BinaryTree_LeetCode_105. Construct Binary Tree from Preorder and Inorder Traversal [swift] (0) 2025.02.26 Matrix_LeetCode_73. Set Matrix Zeroes [swift] (0) 2025.02.25 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 BST_Leetcode_98. Validate Binary Search Tree [swift] (0) 2025.02.19