题目
给定一个二叉树,获取二叉树的右视图,右视图指每一层的最后一个节点
- 对二叉树进行层序遍历,当前层的节点放入子节点后弹出,保证下一轮遍历只会是下一层的节点,由此来保证层级关系,然后获取每一层的最后一个节点‘
function rightTree(node) {
const res = [];
const queue = [node];
while (queue.length) {
const currentLayerLen = queue.length;
// 因为上一层节点都被 shift 掉了,所以每一次都遍历的当前层
for (let i = 0; i < currentLayerLen; i++) {
const node = queue.shift(); // 从队列中取出当前层的节点
// 如果是当前层的最后一个节点,将其值添加到结果数组中
if (i === currentLayerLen - 1) {
res.push(node.val);
}
// 将当前节点的左右子节点加入队列,以便下一轮遍历
if (node.left) queue.push(node.left);
if (node.right) queue.push(node.right);
}
}
}