React

199. Binary Tree Right Side View https://leetcode.com/problems/binary-tree-right-side-view/

Medium
Given the root of 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 1:
Input: root = [1,2,3,null,5,null,4] Output: [1,3,4]
Java
복사
Example 2:
Input: root = [1,null,3] Output: [1,3]
Java
복사
Example 3:
Input: root = [] Output: []
Java
복사
Constraints:
The number of nodes in the tree is in the range [0, 100].
100 <= Node.val <= 100

My solution

1
2 3
4 5 6 7
levelorder로 순회할 때의 인덱스와 같은 위치에 차례대로 들어가야함
const rightSideView = root => { let rt = null; const q = []; function Node(value) { this.left = null; this.right = null; this.key = value; } function insertValue(value) { const node = new Node(value); if (rt == null) rt = node; else if (q[0].left == null) q[0].left = node; else { q[0].right = node; q.shift(); } q.push(node); } function createTree(arr, n) { for (let i = 0; i < n; i++) insertValue(arr[i]); } createTree(root, root.length); function levelOrder(root) { if (root == null) return []; const n = []; n.push(root); const answer = []; while (n.length > 0) { answer.push(n[0].key); if (n[0].right != null) n.push(n[0].right); n.shift(); } return answer; } return levelOrder(rt); };
JavaScript
복사
⇒ 테스트케이스 통과, 제출했을 때 다른 출력이 나옴
Level Order Traversal와 동일하게 큐를 통해
1) 루트 노드를 방문한다.
2) 루트 노드의 Left Child 를 방문한다.
3) 루트 노드의 Right Child를 방문한다.
while (queue.length) { const n = queue.length; for (let i = 0; i < n; i++) { const temp = queue.shift(); if (i === n - 1) res.push(temp.val); if (temp.left !== null) queue.push(temp.left); if (temp.right !== null) queue.push(temp.right); } }
JavaScript
복사
[그림 3] 위의 이진 트리를 Level Order Traversal 할 것입니다.
다른 사람 풀이

소스코드

const rightSideView = root => { if (root === null) { return []; } const q = [root]; const answer = []; while (q.length) { const n = q.length for(let i = 0; i<n; i++){ const temp = q.shift(); if (i === n - 1) answer.push(temp.val); if (temp.left != null) q.push(temp.left); if (temp.right != null) q.push(temp.right); } } return answer; };
JavaScript
복사