Typescript-Algorithms
    Preparing search index...

    Variable binary_tree_right_side_viewConst

    binary_tree_right_side_view: (root: null | TreeNode) => number[] = rightSideView

    199.二叉树的右视图

    给定一个二叉树的根节点 root,返回其 右视图 。

    二叉树的 右视图 是从树的右侧看过去,按从上到下的顺序依次得到的节点值。


    示例1

    输入: root = [1,2,3,null,5,null,4]

    输出: [1,3,4]


    示例2

    输入: root = [1,null,3]

    输出: [1,3]


    输入: root = []

    输出: []


    • 二叉树的节点数在范围 [0, 100]
    • -100 <= Node.val <= 100

    Type declaration

      • (root: null | TreeNode): number[]
      • Definition for a binary tree node. class TreeNode { val: number left: TreeNode | null right: TreeNode | null constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) { this.val = (val===undefined ? 0 : val) this.left = (left===undefined ? null : left) this.right = (right===undefined ? null : right) } }

        Parameters

        • root: null | TreeNode

        Returns number[]

    1. 使用 BFS 层序遍历,每一层收集最右边的节点。
    2. 使用一个队列来存储每一层的节点。
    3. 每次遍历一层,收集最右边的节点。
    4. 返回收集到的节点值。
    /**
    * Definition for a binary tree node.
    * class TreeNode {
    * val: number
    * left: TreeNode | null
    * right: TreeNode | null
    * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
    * this.val = (val===undefined ? 0 : val)
    * this.left = (left===undefined ? null : left)
    * this.right = (right===undefined ? null : right)
    * }
    * }
    */

    function rightSideView(root: TreeNode | null): number[] {
    const ans: number[] = [];
    const queue: TreeNode[] = [];

    if (root) {
    queue.push(root);
    }

    while (queue.length > 0) {
    const n = queue.length;

    for (let i = 0; i < n; i++) {
    const node = queue.shift()!;

    if (i === n - 1) {
    ans.push(node.val);
    }

    node.left && queue.push(node.left);
    node.right && queue.push(node.right);
    }
    }

    return ans;
    };