func (n *Node) IsValid() bool {
	if n == nil {
		return true
	}

	if n.left != nil && n.value < n.left.value || n.right != nil && n.value > n.right.value {
		return false
	}

	return n.left.IsValid() && n.right.IsValid()
}
// IsValid checks if the BST is valid
IsValid checks if the BST is valid
// IsValid checks if the BST is valid
func (n *Node) IsValid() bool {
	if n == nil {
		return true
	}
	if n.left != nil && n.value < n.left.value || n.right != nil && n.value > n.right.value {
		return false
	}
	return n.left.IsValid() && n.right.IsValid()
}
func ( n * Node ) IsValid ( ) bool { if n == nil { return true } if n . left != nil && n . value < n . left . value || n . right != nil && n . value > n . right . value { return false } return n . left . IsValid ( ) && n . right . IsValid ( ) }
IsValid checks if the BST is valid
IsValid checks if the BST is valid