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; } |