Explore diversas soluciones LeetCode en Python, C++, JavaScript, SQL y TypeScript. Ideal para preparación de entrevistas, aprendizaje y práctica de código en múltiples lenguajes de programación. Enlace de repositorio de Github
Dadas las raíces de dos árboles binarios raíz
y sub-raíz
, devolver verdadero
si hay un subárbol de raíz
con la misma estructura y valores de nodo de sub-raíz
y FALSO
de lo contrario.
Un subárbol de un árbol binario árbol
es un árbol que consta de un nodo en árbol
y todos los descendientes de este nodo. El árbol árbol
También podría considerarse como un subárbol de sí mismo.
Ejemplo 1:
Aporte: raíz = [3,4,5,1,2], subraíz = [4,1,2] Producción: verdadero
Ejemplo 2:
Aporte: raíz = [3,4,5,1,2,nulo,nulo,nulo,nulo,0], subraíz = [4,1,2] Producción: FALSO
Restricciones:
- El número de nodos en el
raíz
El árbol está dentro del rango[1, 2000]
. - El número de nodos en el
sub-raíz
El árbol está dentro del rango[1, 1000]
. -10 4 <= raíz.val <= 10 4
-10 4 <= subRoot.val <= 10 4
Pitón
Complejidad de tiempo #: O(m*n) Complejidad de espacio #: O(m+n) de la importación de tipos Clase opcional TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right Clase Solución: def isSameTree(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> bool: si no es root1 ni root2: devuelve True si no es root1 ni root2: devuelve False si root1.val != root2.val: devuelve False devuelve self.isSameTree(root1.left, root2.left) y self.isSameTree(root1.right, root2.right) def isSubtree(self, root: Optional[TreeNode], subRoot: Optional[TreeNode]) -> bool: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right class Solución: def isSameTree(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> bool: si no es root1 ni root2: devuelve True si no es root1 ni root2: devuelve False self.isSameTree(node, subRoot): devuelve True devuelve dfs(node.left) o dfs(node.right) devuelve dfs(root) root = TreeNode(3) root.left = TreeNode(4) root.left.left = TreeNode(1) root.left.right = TreeNode(2) root.right = TreeNode(5) subRoot = TreeNode(4) subRoot.left = TreeNode(1) subRoot.right = TreeNode(2) print(Solución().isSubárbol(raíz, subRaíz))