Niu es una palabra, qué puedo decir, pensé en atravesar el nodo más a la derecha cada vez, pero también pensé que si hay una capa de nodos con solo la mitad izquierda y no la mitad derecha, no es fácil obtenerlo Use BFS para recorrer, obtenga el último número cada vez, cansarse.
/ ** * Definición para un nodo de árbol binario. * public class TreeNode { * int val; * TreeNode a la izquierda; * TreeNode derecho; * TreeNode (int x) {val = x; } *} * / clase Solución { public List <Integer> rightSideView (TreeNode root) { List <Integer> res = new ArrayList <> (); if (root == null ) { return res; } Queue <TreeNode> queue = new LinkedList <> (); queue.offer (root); while (! queue.isEmpty ()) { int size = queue.size (); for ( int i = 0; i <size; i ++ ) { TreeNode node = queue.poll (); if (node.left! = null ) { queue.offer (node.left); } if (node.right! = null ) { queue.offer (node.right); } if (i == tamaño - 1 ) { res.add (node.val); } } } return res; } }
Método 2: No es que pueda pensar demasiado en ello.
/ ** * Definición para un nodo de árbol binario. * public class TreeNode { * int val; * TreeNode a la izquierda; * TreeNode derecho; * TreeNode (int x) {val = x; } *} * / clase Solución { List <Integer> res = new ArrayList <> (); public list <Integer> rightSideView (raíz de TreeNode) { dfs (root, 0); // 从 根节点 开始 访问 , 根节点 深度 是 0 return res; } dfs privado vacío (raíz de TreeNode, profundidad int ) { if (root == null) { volver ; } if (profundidad == res.size ()) { res.add (root.val); } profundidad ++ ; dfs (root.right, profundidad); dfs (raíz.izquierda, profundidad); } }