https://leetcode.com/problems/binary-tree-right-side-view/
又是一道tree的题。还是两种方法,第一种递归(recursion),使用上面遍历树的模板。这道题其实就是优先找到右子树的节点,没有右子树则找到左子树,因此递归的时候需要带上层级level,另外,采用先右节点,再左节点的方式遍历该树,需要确保第一个节点(优先右节点,没有右节点则为左节点)被加入到最后的结果中。
public List<Integer> rightSideView(TreeNode root) {
List<Integer> res = new ArrayList<>();
dfsHelper(root, res, 0);
return res;
}
private void dfsHelper(TreeNode root, List res, int level) {
// 如果right为null,则遍历left,否则前序遍历right
if (root != null) {