Мне нужно определить, представлен ли список, представляющий дерево, является ли дерево допустимым BST (этот вопрос берется из leetcode). Я видел другие сообщения об этом, но мне было интересно, может ли кто-нибудь помочь мне с моим подходом, поскольку это явно не так. Например, для дерева [1,2,3], где 1 - корень, 2 - левый ребенок, а 3 - правильный ребенок, мой код возвращает true. Надеюсь, это потребует лишь небольших изменений, но может быть, что подход всей функции неверен.Функция, чтобы определить, является ли дерево допустимым BST?
Вот мой код:
def isValidBST(self, root):
if (root == None):
return True
if (root.left == None or root.left.val < root.val):
return self.isValidBST(root.left)
if (root.right == None or root.right.val > root.val):
return self.isValidBST(root.right)
return False
Во-вторых, я видел подходы с функцией хелперов, которая принимает в мин/макс значения, но это меня смущает. Если кто-то также хотел бы объяснить, почему этот подход является хорошим/лучшим, это было бы очень полезно!
Если '.. или root.left) .val < root.val' является ложным, если вы не сразу вернете «ложь»? (И то же самое - инвертированное - для 'right'.) – usr2564301
Я не вижу, где у вас есть« список, представляющий дерево » –
Используйте« is None »при сравнении с« None »http://stackoverflow.com/questions/3257919/what-is-the-difference-between-is-none-and-none –