diff --git a/lcci/04.06.Successor/README.md b/lcci/04.06.Successor/README.md index e23edb9b80530..f6223b5acd95e 100644 --- a/lcci/04.06.Successor/README.md +++ b/lcci/04.06.Successor/README.md @@ -202,6 +202,38 @@ var inorderSuccessor = function (root, p) { }; ``` +```swift +/* class TreeNode { +* var val: Int +* var left: TreeNode? +* var right: TreeNode? +* +* init(_ val: Int) { +* self.val = val +* self.left = nil +* self.right = nil +* } +* } +*/ + +class Solution { + func inorderSuccessor(_ root: TreeNode?, _ p: TreeNode?) -> TreeNode? { + var current = root + var successor: TreeNode? = nil + + while let node = current { + if node.val > p!.val { + successor = node + current = node.left + } else { + current = node.right + } + } + return successor + } +} +``` + diff --git a/lcci/04.06.Successor/README_EN.md b/lcci/04.06.Successor/README_EN.md index 6934f70505df2..fc0a4a1c8efed 100644 --- a/lcci/04.06.Successor/README_EN.md +++ b/lcci/04.06.Successor/README_EN.md @@ -221,6 +221,38 @@ var inorderSuccessor = function (root, p) { }; ``` +```swift +/* class TreeNode { +* var val: Int +* var left: TreeNode? +* var right: TreeNode? +* +* init(_ val: Int) { +* self.val = val +* self.left = nil +* self.right = nil +* } +* } +*/ + +class Solution { + func inorderSuccessor(_ root: TreeNode?, _ p: TreeNode?) -> TreeNode? { + var current = root + var successor: TreeNode? = nil + + while let node = current { + if node.val > p!.val { + successor = node + current = node.left + } else { + current = node.right + } + } + return successor + } +} +``` + diff --git a/lcci/04.06.Successor/Solution.swift b/lcci/04.06.Successor/Solution.swift new file mode 100644 index 0000000000000..e110c6645789d --- /dev/null +++ b/lcci/04.06.Successor/Solution.swift @@ -0,0 +1,29 @@ +/* class TreeNode { +* var val: Int +* var left: TreeNode? +* var right: TreeNode? +* +* init(_ val: Int) { +* self.val = val +* self.left = nil +* self.right = nil +* } +* } +*/ + +class Solution { + func inorderSuccessor(_ root: TreeNode?, _ p: TreeNode?) -> TreeNode? { + var current = root + var successor: TreeNode? = nil + + while let node = current { + if node.val > p!.val { + successor = node + current = node.left + } else { + current = node.right + } + } + return successor + } +} \ No newline at end of file