14 lines
		
	
	
	
		
			412 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			14 lines
		
	
	
	
		
			412 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| def is_valid(node):
 | |
|     """
 | |
|     Return True if `node` is a valid binary search tree.
 | |
|     """
 | |
|     s = []
 | |
|     s.append((float('-inf'), node, float('inf')))
 | |
|     while s:
 | |
|         lo, node, hi = s.pop()
 | |
|         if lo <= node.value <= hi:
 | |
|             node.lhs and s.append((lo, node.lhs, node.value))
 | |
|             node.rhs and s.append((node.value, node.rhs, hi))
 | |
|         else:
 | |
|             return False
 | |
|     return True
 |