Sobes.tech
Junior — Senior
59

Корректировка функции сравнения бинарных деревьев

Условие задачи

Проанализировать предоставленный код функции is_equal. Выявить и исправить логические недочёты, которые приводят к неверному определению идентичности двух бинарных деревьев TreeNode. После исправления функция должна возвращать True, только если обе структуры полностью совпадают по расположению узлов и их значениям, в остальных случаях – False.

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

def is_equal(obj_1: TreeNode, obj_2: TreeNode) -> bool:
    if obj_1.val != obj_2.val:
        return False
    if obj_1.left is None and obj_2.left is None:
        left = True
    elif obj_1.left is not None and obj_2.left is not None:
        left = is_equal(obj_1.left, obj_2.left)
    else:
        return False
    if obj_1.right is None and obj_2.right is None:
        right = True
    elif obj_1.right is not None and obj_2.right is not None:
        right = is_equal(obj_1.right, obj_2.right)
    else:
        return False
    return left and right