BFS неправильно возвращает False в тестовом примереPython

Программы на Python
Ответить
Anonymous
 BFS неправильно возвращает False в тестовом примере

Сообщение Anonymous »

Я пытаюсь решить проблему LeetCode: https://leetcode.com/problems/check-com ... nary-tree/, возможно, приведенное ниже решение пока не самое чистое/правильное решение, но я мне просто интересно, почему он возвращает True для тестового примера: root = [1,2,3,4,5,null,7]? Я провел некоторую отладку и почти уверен, что здесь вызывается elif node.right, а не node.left. Мы будем очень признательны за любые подсказки.
class Solution:
def isCompleteTree(self, root: Optional[TreeNode]) -> bool:
result = []
depth = 0

def bfs_search(root):
if root is None:
return

queue = deque([root])
while queue:
level = []
for levels in range(len(queue)):
node = queue.popleft()
level.append(node)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
result.append(level)

bfs_search(root)
tree_depth = len(result) - 2 # 1
result_two = []

def second_bfs(root):
nonlocal depth
nonlocal tree_depth
if root is None:
return

queue = deque([root])
while queue:
if depth == tree_depth:
break_indicator = 0
for node in queue:
if break_indicator == 1:
if node.left or node.right:
return False
elif (not node.left) and (not node.right):
pass
# break indicator is 0 here
else:
if node.left and node.right:
pass
elif (node.left and not node.right) or (not node.left and not node.right):
break_indicator = 1
pass
elif node.right and not node.left:
return False
queue = None
else:
depth += 1
level = []
for levels in range(len(queue)):
node = queue.popleft()
level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
result_two.append(level)
if len(level) != 2**(depth-1):
return False

second_bfs(root)
return True


Подробнее здесь: https://stackoverflow.com/questions/793 ... -test-case
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»