enter image description here enter image description here
这个问题的重点是两个变种。在LeetCode下次使用此函数之前,不能立即初始化'last'和'isFirst'。他们保存最后一个值,而不是再次初始化。 我不能用这个想法来回答这个问题。 帮我 ! 英语不好,对不起!
/**
* Definition for a binary tree node.
* class TreeNode(var _value: Int) {
* var value: Int = _value
* var left: TreeNode = null
* var right: TreeNode = null
* }
*/
object Solution {
var last: Double = -Double.MaxValue
var isFirst = true
def isValidBST(root: TreeNode): Boolean = {
if (root == null) {
return true
}
if (isValidBST(root.left)) {
if (last < root.value || isFirst) {
isFirst = false
last = root.value
return isValidBST(root.right)
}
}
last = -Double.MaxValue
isFirst = true
false
}
}