问题描述:具体描述见原题。简单来收就是验证给定二叉树是不是有效的二叉搜索树。
解题思路: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) // 递归左右子树
}
补充说明:无。