Skip to content

Commit b24e110

Browse files
committed
refactor: Improve performance of isValidBST algorithm
- Replaced redundant while loops with a single traversal. - Added a previousNode variable to keep track of the last visited node.
1 parent bc6055c commit b24e110

File tree

1 file changed

+5
-17
lines changed

1 file changed

+5
-17
lines changed

validate-binary-search-tree/WhiteHyun.swift

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,12 @@
2222
* }
2323
*/
2424
class Solution {
25+
private var previousNode: TreeNode?
2526
func isValidBST(_ node: TreeNode?) -> Bool {
2627
guard let node else { return true }
27-
28-
var left = node.left
29-
var right = node.right
30-
31-
while left?.right != nil {
32-
left = left?.right
33-
}
34-
while right?.left != nil {
35-
right = right?.left
36-
}
37-
38-
if left?.val ?? .min < node.val,
39-
node.val < right?.val ?? .max {
40-
return isValidBST(node.left) && isValidBST(node.right)
41-
}
42-
43-
return false
28+
if isValidBST(node.left) == false { return false }
29+
if let previousNode, previousNode.val >= node.val { return false }
30+
previousNode = node
31+
return isValidBST(node.right)
4432
}
4533
}

0 commit comments

Comments
 (0)