199.Binary Tree Right Side View

Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.

Example:

Input: [1, 2, 3, null, 5, null, 4]
Output: [1, 3, 4]

Explanation:

1 <--- / \ 2 3 <--- \ \ 5 4 <---

Analyze

将题目表述转化下为: 展示当前行的最右侧元素即可; 该题考察的是树的广度遍历(BFS), 运用到了队列相关知识。

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var rightSideView = function(root) {
  const printList = []
  if (!root) { return [] }
  const list = []
  list.push({ level: 0, node: root })

  while(list.length > 0) {
    const { level, node } = list.shift()
    if (!printList[level]) {
      printList[level] = []
    }
    printList[level].push(node.val)

    node.left && list.push({ level: level + 1, node: node.left })
    node.right && list.push({ level: level + 1, node: node.right })
  }

  const result = []
  printList.map(printListArr => {
    result.push(printListArr[printListArr.length - 1])
  })
  return result
}

Similar Title

102(Sister Title)、107、103