título Descripción
Por favor implementar una función, un árbol binario se utiliza para determinar no simétrica. Tenga en cuenta que si una imagen binaria es un árbol binario con esta misma definición que simétrica.
Una idea: el método más simple determina de manera recursiva subárboles izquierdo y derecho
pública clase de soluciones { boolean isSymmetrical (NodoArbol PROOT) { si (== PROOT nula ) { devolver cierto ; } Retorno juez (pRoot.left, pRoot.right); } Privada booleano juez (NodoArbol izquierda, NodoArbol derecha) { si (a la izquierda == nula && derecha == nula ) devolver cierto ; si (== izquierda nula || derecha == nula ) de retorno falsa ; Si(! = left.val right.val) de retorno falsa ; retorno juez (left.left, right.right) && juez (left.right, right.left); } }
Dos ideas: una pila para almacenar el par de subárboles izquierdo y derecho y por lo tanto obtener una seguridad cuando se toma en pares son espejo comparación elemento
Una cola puede ser una cola para acceder a datos
importación java.util.Stack; pública clase de soluciones { boolean isSymmetrical (NodoArbol PROOT) { si (PROOT == nula ) devolver cierto ; Stack <TreeNode> pila = nuevo Stack <> (); stack.push (pRoot.left); stack.push (pRoot.right); mientras que (! stack.isEmpty ()) { NodoArbol derecha = stack.pop (); TreeNode dejó = stack.pop (); si (a la izquierda == nula && derecha == nula) Continuar ; si (== izquierda nula || derecha == nula ) de retorno falsa ; si (left.val = right.val!) de retorno falsa ; stack.push (left.left); stack.push (right.right); stack.push (left.right); stack.push (right.left); } Devolver cierto ; } }