/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func isValidBST(root *TreeNode) bool {
isBST, pre := true, math.MinInt
var dfs func(node *TreeNode)
dfs = func(node *TreeNode) {
if node == nil {
return
}
dfs(node.Left)
if pre != math.MinInt && pre >= node.Val {
isBST = false
return
}
if isBST==false{
return
}
pre = node.Val
dfs(node.Right)
}
dfs(root)
return isBST
}