036_验证二叉搜索树
知识点:中序遍历、二叉搜索树
LeetCode第九十八题:https://leetcode-cn.com/problems/validate-binary-search-tree/submissions/
语言:GoLang
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
var pre *TreeNode
func isValidBST(root *TreeNode) bool {
pre = nil
return midTraverse(root)
// return traverse(root, math.MinInt64, math.MaxInt64)
}
// 中序遍历
func midTraverse(root *TreeNode) bool {
if root == nil {
return true
}
ans := midTraverse(root.Left)
if pre != nil && pre.Val >= root.Val {
return false
}
pre = root
ans = ans && midTraverse(root.Right)
return ans
}
// 普通遍历
func traverse(root *TreeNode, lower int, upper int) bool {
if root == nil {
return true
}
if root.Val <= lower || root.Val >= upper {
return false
}
return traverse(root.Left, lower, root.Val) && traverse(root.Right, root.Val, upper)
}

浙公网安备 33010602011771号