题目描述
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例 1:
输入:root = [1,2,3,null,5,null,4]
输出:[1,3,4]
解释:

示例 2:
输入:root = [1,2,3,4,null,null,null,5]
输出:[1,3,4,5]
解释:
示例 3:
输入:root = [1,null,3]
输出:[1,3]
示例 4:
输入:root = []
输出:[]
思路&js代码
1、深度优先搜索
先递归右子树,再递归左子树,当某个深度首次到达时,对应的节点就在右视图中。
var rightSideView = function(root) {
const ans = [];
function dfs(node, depth) {
if (node === null) {
return;
}
if (depth === ans.length) { // 这个深度首次遇到
ans.push(node.val);
}
dfs(node.right, depth + 1); // 先递归右子树,保证首次遇到的一定是最右边的节点
dfs(node.left, depth + 1);
}
dfs(root, 0);
return ans;
};