From 83d20d328209991d2d6d9ae1ec784445e5c2322f Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Wed, 24 Apr 2024 08:49:10 +0100 Subject: [PATCH 1/2] Swift Implementation for LCCI 04.02 --- lcci/04.02.Minimum Height Tree/README.md | 33 +++++++++++++++++++ lcci/04.02.Minimum Height Tree/README_EN.md | 33 +++++++++++++++++++ lcci/04.02.Minimum Height Tree/Solution.swift | 30 +++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 lcci/04.02.Minimum Height Tree/Solution.swift diff --git a/lcci/04.02.Minimum Height Tree/README.md b/lcci/04.02.Minimum Height Tree/README.md index f800937065e0b..0dccdf3e8c973 100644 --- a/lcci/04.02.Minimum Height Tree/README.md +++ b/lcci/04.02.Minimum Height Tree/README.md @@ -214,6 +214,39 @@ var sortedArrayToBST = function (nums) { }; ``` +```swift +/** +* class TreeNode { +* var val: Int +* var left: TreeNode? +* var right: TreeNode? +* +* init(_ val: Int, _ left: TreeNode? = nil, _ right: TreeNode? = nil) { +* self.val = val +* self.left = left +* self.right = right +* } +* } +*/ + +class Solution { + private var nums: [Int]! + + func sortedArrayToBST(_ nums: [Int]) -> TreeNode? { + self.nums = nums + return dfs(0, nums.count - 1) + } + + private func dfs(_ l: Int, _ r: Int) -> TreeNode? { + if l > r { + return nil + } + let mid = (l + r) / 2 + return TreeNode(nums[mid], dfs(l, mid - 1), dfs(mid + 1, r)) + } +} +``` + diff --git a/lcci/04.02.Minimum Height Tree/README_EN.md b/lcci/04.02.Minimum Height Tree/README_EN.md index 55fc3253863bc..9d29c252a4512 100644 --- a/lcci/04.02.Minimum Height Tree/README_EN.md +++ b/lcci/04.02.Minimum Height Tree/README_EN.md @@ -237,6 +237,39 @@ var sortedArrayToBST = function (nums) { }; ``` +```swift +/** +* class TreeNode { +* var val: Int +* var left: TreeNode? +* var right: TreeNode? +* +* init(_ val: Int, _ left: TreeNode? = nil, _ right: TreeNode? = nil) { +* self.val = val +* self.left = left +* self.right = right +* } +* } +*/ + +class Solution { + private var nums: [Int]! + + func sortedArrayToBST(_ nums: [Int]) -> TreeNode? { + self.nums = nums + return dfs(0, nums.count - 1) + } + + private func dfs(_ l: Int, _ r: Int) -> TreeNode? { + if l > r { + return nil + } + let mid = (l + r) / 2 + return TreeNode(nums[mid], dfs(l, mid - 1), dfs(mid + 1, r)) + } +} +``` + diff --git a/lcci/04.02.Minimum Height Tree/Solution.swift b/lcci/04.02.Minimum Height Tree/Solution.swift new file mode 100644 index 0000000000000..c924d671e4fc4 --- /dev/null +++ b/lcci/04.02.Minimum Height Tree/Solution.swift @@ -0,0 +1,30 @@ +/** +* class TreeNode { +* var val: Int +* var left: TreeNode? +* var right: TreeNode? +* +* init(_ val: Int, _ left: TreeNode? = nil, _ right: TreeNode? = nil) { +* self.val = val +* self.left = left +* self.right = right +* } +* } +*/ + +class Solution { + private var nums: [Int]! + + func sortedArrayToBST(_ nums: [Int]) -> TreeNode? { + self.nums = nums + return dfs(0, nums.count - 1) + } + + private func dfs(_ l: Int, _ r: Int) -> TreeNode? { + if l > r { + return nil + } + let mid = (l + r) / 2 + return TreeNode(nums[mid], dfs(l, mid - 1), dfs(mid + 1, r)) + } +} From c0e809fc67d3187867fe63ba71b024c3cfa86a22 Mon Sep 17 00:00:00 2001 From: klever34 Date: Wed, 24 Apr 2024 08:05:53 +0000 Subject: [PATCH 2/2] style: format code and docs with prettier --- lcci/04.02.Minimum Height Tree/README.md | 2 +- lcci/04.02.Minimum Height Tree/README_EN.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lcci/04.02.Minimum Height Tree/README.md b/lcci/04.02.Minimum Height Tree/README.md index 0dccdf3e8c973..458db7f154dee 100644 --- a/lcci/04.02.Minimum Height Tree/README.md +++ b/lcci/04.02.Minimum Height Tree/README.md @@ -220,7 +220,7 @@ var sortedArrayToBST = function (nums) { * var val: Int * var left: TreeNode? * var right: TreeNode? -* +* * init(_ val: Int, _ left: TreeNode? = nil, _ right: TreeNode? = nil) { * self.val = val * self.left = left diff --git a/lcci/04.02.Minimum Height Tree/README_EN.md b/lcci/04.02.Minimum Height Tree/README_EN.md index 9d29c252a4512..3dd522b6e52aa 100644 --- a/lcci/04.02.Minimum Height Tree/README_EN.md +++ b/lcci/04.02.Minimum Height Tree/README_EN.md @@ -243,7 +243,7 @@ var sortedArrayToBST = function (nums) { * var val: Int * var left: TreeNode? * var right: TreeNode? -* +* * init(_ val: Int, _ left: TreeNode? = nil, _ right: TreeNode? = nil) { * self.val = val * self.left = left