golang力扣leetcode 98. 验证二叉搜索树

简介: golang力扣leetcode 98. 验证二叉搜索树

题解

第一种做法,递归左右子树

第二种做法中序遍历,然后遍历一遍slice即可,有一个坑就是value相同也是false

代码

func isValidBST(root *TreeNode) bool {
    return helper(root, math.MinInt64, math.MaxInt64)
}
func helper(root *TreeNode, lower, upper int) bool {
    if root == nil {
        return true
    }
    if root.Val <= lower || root.Val >= upper {
        return false
    }
    return helper(root.Left, lower, root.Val) && helper(root.Right, root.Val, upper)
}
package main
func main() {
}
type TreeNode struct {
  Val   int
  Left  *TreeNode
  Right *TreeNode
}
func isValidBST(root *TreeNode) bool {
  result := make([]int, 0)
  inorder(root, &result)
  return check(result)
}
func inorder(root *TreeNode, result *[]int) {
  if root == nil {
    return
  }
  inorder(root.Left, result)
  *result = append(*result, root.Val)
  inorder(root.Right, result)
}
func check(cnt []int) bool {
  for i := 0; i < len(cnt)-1; i++ {
    if cnt[i] >= cnt[i+1] {
      return false
    }
  }
  return true
}


目录
相关文章
|
27天前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
30天前
【LeetCode 45】701.二叉搜索树中的插入操作
【LeetCode 45】701.二叉搜索树中的插入操作
9 1
|
30天前
【LeetCode 44】235.二叉搜索树的最近公共祖先
【LeetCode 44】235.二叉搜索树的最近公共祖先
15 1
|
30天前
【LeetCode 48】108.将有序数组转换为二叉搜索树
【LeetCode 48】108.将有序数组转换为二叉搜索树
34 0
|
30天前
【LeetCode 47】669.修剪二叉搜索树
【LeetCode 47】669.修剪二叉搜索树
8 0
|
30天前
【LeetCode 46】450.删除二叉搜索树的节点
【LeetCode 46】450.删除二叉搜索树的节点
11 0
|
30天前
【LeetCode 42】501.二叉搜索树中的众数
【LeetCode 42】501.二叉搜索树中的众数
8 0
|
30天前
【LeetCode 41】530.二叉搜索树的最小绝对差
【LeetCode 41】530.二叉搜索树的最小绝对差
9 0
|
30天前
【LeetCode 40】98.验证二叉搜索树
【LeetCode 40】98.验证二叉搜索树
11 0
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行