Conversation
|
Strengths:
Areas for improvement:
Revised solution sketch: class BSTIterator {
private var stack: [TreeNode] = []
init(_ root: TreeNode?) {
self.dfs(root)
}
func next() -> Int {
let node = stack.removeLast()
dfs(node.right)
return node.val
}
func hasNext() -> Bool {
return !stack.isEmpty
}
private func dfs(_ root: TreeNode?) {
var current = root
while let node = current {
stack.append(node)
current = node.left
}
}
} |
|
Strengths:
Areas for Improvement:
Suggested corrected code: class BSTIterator {
private var stack: [TreeNode] = []
init(_ root: TreeNode?) {
dfs(root)
}
func next() -> Int {
let node = stack.removeLast()
dfs(node.right)
return node.val
}
func hasNext() -> Bool {
return !stack.isEmpty
}
private func dfs(_ root: TreeNode?) {
var current = root
while let node = current {
stack.append(node)
current = node.left
}
}
}Note: This assumes that the TreeNode class is defined as in the problem. Also, in Swift, using |
Problem1 (https://leetcode.com/problems/binary-search-tree-iterator/)
Problem2 (https://leetcode.com/problems/reorder-list/)
Problem3 (https://practice.geeksforgeeks.org/problems/delete-without-head-pointer/1)
Problem4 (https://leetcode.com/problems/intersection-of-two-linked-lists/)