leetcode-98

159 阅读1分钟

问题描述:具体描述见原题。简单来收就是验证给定二叉树是不是有效的二叉搜索树

解题思路:DFS,递归判断每个节点与子节点是否符合二叉搜索树要求。具体过程见代码。

具体代码:

func isValidBST(root *TreeNode) bool {
   return isValidbst(root, math.Inf(-1), math.Inf(1)) // 根据题目要求定义节点值范围,从根结点开始递归
}

func isValidbst(root *TreeNode, min, max float64) bool {
   if root == nil { // 递归终止条件
      return true
   }
   temp := float64(root.Val)
   return temp < max && temp > min && isValidbst(root.Left, min, temp) && isValidbst(root.Right, temp, max) // 递归左右子树
}

补充说明:无。