在刷力扣的时候遇到了下面这道题
递归写法需要用到一个全局指针,简单将指针定义在函数外部并不能解答通过,猜测是力扣网的测试历程是所有的测试用例都在一起测试导致的。所以就用了匿名函数写法。思路参考代码随想录。
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
var isBST func(node *TreeNode) bool
func isValidBST(root *TreeNode) bool {
var pre *TreeNode = nil
isBST = func(root *TreeNode) bool {
if root == nil {
return true
}
left := isBST(root.Left)
if pre != nil && pre.Val >= root.Val {
return false
}
pre = root
right := isBST(root.Right)
return left && right
}
return isBST(root)
}