From 37dcf5f4f12fb9b8e6bdd6a6be854a6ff6b5021f Mon Sep 17 00:00:00 2001 From: Lanre Adedara Date: Fri, 7 Jun 2024 07:55:16 +0100 Subject: [PATCH] feat: add swift implementation to lcof2 problem: No.052 --- .../README.md" | 52 +++++++++++++++++++ .../Solution.swift" | 47 +++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 "lcof2/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221/Solution.swift" diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221/README.md" index df64c0c17e332..35b18f6c8cbd2 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221/README.md" @@ -326,6 +326,58 @@ struct TreeNode* increasingBST(struct TreeNode* root) { } ``` +#### Swift + +```swift +/* class TreeNode { +* var val: Int +* var left: TreeNode? +* var right: TreeNode? +* init() { +* self.val = 0 +* self.left = nil +* self.right = nil +* } +* init(_ val: Int) { +* self.val = val +* self.left = nil +* self.right = nil +* } +* init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) { +* self.val = val +* self.left = left +* self.right = right +* } +* } +*/ + +class Solution { + func increasingBST(_ root: TreeNode?) -> TreeNode? { + var head: TreeNode? = nil + var tail: TreeNode? = nil + var stack = [TreeNode]() + var cur = root + + while !stack.isEmpty || cur != nil { + while cur != nil { + stack.append(cur!) + cur = cur?.left + } + cur = stack.removeLast() + if head == nil { + head = cur + } else { + tail?.right = cur + } + tail = cur + cur?.left = nil + cur = cur?.right + } + return head + } +} +``` + diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221/Solution.swift" "b/lcof2/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221/Solution.swift" new file mode 100644 index 0000000000000..acf00b0091d35 --- /dev/null +++ "b/lcof2/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221/Solution.swift" @@ -0,0 +1,47 @@ +/* class TreeNode { +* var val: Int +* var left: TreeNode? +* var right: TreeNode? +* init() { +* self.val = 0 +* self.left = nil +* self.right = nil +* } +* init(_ val: Int) { +* self.val = val +* self.left = nil +* self.right = nil +* } +* init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) { +* self.val = val +* self.left = left +* self.right = right +* } +* } +*/ + +class Solution { + func increasingBST(_ root: TreeNode?) -> TreeNode? { + var head: TreeNode? = nil + var tail: TreeNode? = nil + var stack = [TreeNode]() + var cur = root + + while !stack.isEmpty || cur != nil { + while cur != nil { + stack.append(cur!) + cur = cur?.left + } + cur = stack.removeLast() + if head == nil { + head = cur + } else { + tail?.right = cur + } + tail = cur + cur?.left = nil + cur = cur?.right + } + return head + } +} \ No newline at end of file