URL вопроса: https://leetcode.com/problems/leaf-similar-trees/ а>
Вопрос:
Рассмотрим все листья бинарного дерева в порядке слева направо. Значения этих листьев образуют последовательность значений листьев.
Например, в приведенном выше дереве последовательность конечных значений равна
(6, 7, 4, 9, 8)
.Два бинарных дерева считаются похожими на листья, если их последовательность значений листьев одинакова.
Вернуть
true
тогда и только тогда, когда два заданных дерева с головными узламиroot1
иroot2
подобны листьям.Пример 1:
Вход:
root1 = [3,5,1,6,2,9,8,null,null,7,4], root2 = [3,5,1,6,7,4,2,null,null,null,null,null,null,9,8]
Вывод: правда
Пример 2:
Вход:
root1 = [1], root2 = [1]
Вывод: правда
Пример 3:
Вход:
root1 = [1], root2 = [2]
Вывод: ложь
Пример 4:
Вход:
root1 = [1,2], root2 = [2,2]
Вывод: правда
Мой код:
class Solution:
def leafSimilar(self, root1: TreeNode, root2: TreeNode) -> bool:
def dfs(node1, res=[]):
if res == None:
res=[]
if node1:
self.leafSimilar(node1.left, None)
self.leafSimilar(node1.right, None)
if node1.left == None and node1.right == None:
res.append(node1.val)
return (res)
return (dfs(root1)) == (dfs(root2))
Пройдено 20 кейсов, но он застрял на 21-м кейсе. Тестовый пример, где это не удалось:
Input: root1 = [1,2,3], root2 = [1,3,2]
Expected Output: false
Мой вывод = Истина
Оказывается, листовые узлы — это [2,3] и [3,2], и поэтому он говорит правду, когда это не так. Я попытался использовать список и установить, как я думал, это сравнит последовательность, но не повезло. Что я делаю?