Categorías
Algorithms Interview

LeetCode – Árbol simétrico (Java)

Problema

Dado un árbol binario, verifique si es un espejo de sí mismo (es decir, simétrico alrededor de su centro).

Por ejemplo, este árbol binario es simétrico:

    1
   / 
  2   2
 /  / 
3  4 4  3

Pero lo siguiente no es:

    1
   / 
  2   2
      
   3    3

Solución Java: recursividad

Este problema se puede resolver mediante una recursividad simple. La clave es encontrar las condiciones que devuelven falso, como el valor no es igual, solo un nodo (izquierdo o derecho) tiene valor.

public boolean isSymmetric(TreeNode root) {
	if (root == null)
		return true;
	return isSymmetric(root.left, root.right);
}
 
public boolean isSymmetric(TreeNode l, TreeNode r) {
	if (l == null && r == null) {
		return true;
	} else if (r == null || l == null) {
		return false;
	}
 
	if (l.val != r.val)
		return false;
 
	if (!isSymmetric(l.left, r.right))
		return false;
	if (!isSymmetric(l.right, r.left))
		return false;
 
	return true;
}

  LeetCode - Candy (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *