Directorio de artículos
1. Descripción
Voltea un árbol binario.
2. Ejemplo
entrar:
Salida:
3. Análisis
Observe la entrada y la salida, tome el nodo "4" como objetivo de observación, puede ver que el nodo raíz "4" permanece sin cambios, su hijo izquierdo "2" y el hijo derecho "7" han intercambiado posiciones y el hijo izquierdo "2" está ubicado El subárbol izquierdo y el subárbol derecho donde se encuentra el hijo derecho "7" también han intercambiado posiciones como un todo. La misma regla también existe en otros nodos.
Entonces llegamos a la conclusión,
La operación de voltear el árbol binario incluye:
(1) El nodo raíz permanece sin cambios;
(2) El subárbol izquierdo y el subárbol derecho se intercambian.
(3) Voltee el subárbol izquierdo;
(4) Voltee el subárbol derecho.
4. Código
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode invertTree(TreeNode root)
{
// 递归的终止条件
if(root == null)
return root;
// 根非空的话,交换左右子树
TreeNode cache = root.left;
root.left = root.right;
root.right = cache;
// 翻转左子树
invertTree(root.left);
// 翻转右子树
invertTree(root.right);
return root;
}
}
5. Verificación
6. Fuente
- LeetCode 226. Invertir árbol binario
Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/invert-binary-tree Los
derechos de autor son propiedad de LeetCode Network. Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.