[Leetcode] 0572. Subárbol de otro árbol

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

Tabla de contenido

Fácil


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))
				
			
es_ESEspañol