199. 이진 트리 오른쪽 보기 🚀
솔루션 개발:
질문
이 기사에서는 Leetcode의 '199. Binary Tree Right Side View' 질문을 다룰 것입니다.
의문:
Given the
root
of a binary tree, imagine yourself standing on the right side of it, return thevalues
of the nodes you can see ordered from top to bottom.Example:
Input: root = [1,2,3,null,5,null,4]
Output: [1,3,4]
질문 설명
이 질문의 등급은 보통입니다. 대부분 정확합니다. 그러나 이것은 Medium 질문을 이미 해결한 경우에만 매체입니다. 이 키Level Order Traversal Pattern를 모르면 이 질문을 이해하기 어려울 것입니다. Level Order Traversal Pattern 을 아는 것이 중요합니다. 이 패턴을 모르시면 Level Order Traversal Question First 해결하세요.
패턴을 이해하지 못하는 경우 읽기를 강력히 권장합니다.
우리가 질문을 받고 있는 것은 우리가 이진 트리의 오른쪽에 서 있다고 상상하는 것입니다. 어떤 노드를 볼 수 있습니까? 즉, 다른 노드 뒤에 숨겨진 노드를 의미하는 오른쪽 가시 노드만 트래버스할 수 있는 경우입니다. 이것은 혼란스럽게 들리지만 실제로는 매우 간단합니다.
권장 지식
우리는 무엇을 알고 있습니까?
어떻게 할 것인가:
이진 트리의 레벨 순서 순회를 수행할 것입니다. a
row
의 끝에 도달할 때마다 노드의 값을 배열로 푸시할 것입니다. 이 배열은 가장 오른쪽에 있는 모든 노드가 됩니다. 이렇게 하는 이유는 레벨 순서의 각 행 끝에 순회가 항상 오른쪽 보기에서 표시되기 때문입니다. 행의 모든 마지막 노드가 보이는 노드임을 의미합니다.right_view
를 선언하고 빈 배열로 설정하겠습니다. 여기에는 가장 적합한 노드 값이 모두 들어 있습니다. right_view
배열에 추가합니다. 빅오 표기법:
리트코드 결과:
제출 링크 참조:
해결책
var rightSideView = function (root) {
// Base case, no nodes given.
if (!root) {
return [];
}
// An array to store all the right most nodes
const right_view = [];
// A queue for the level order traversal
const queue = [root];
// While the queue is not empty, keep going
while (queue.length) {
// Make note of the queue length.
// We do this to perform row by row traversal.
const q_len = queue.length;
// Iterate through the queue, end at the row
for (let i = 0; i < q_len; i++) {
// Current node
const node = queue.pop();
// If the current index is the end of the row,
// meaning, it's the right most node in the level.
// Push it to the right_view array.
if (i === q_len - 1) {
right_view.push(node.val);
}
// Add them.
node.left ? queue.unshift(node.left) : null;
node.right ? queue.unshift(node.right) : null;
}
}
// Return Home!!
return right_view;
};
Reference
이 문제에 관하여(199. 이진 트리 오른쪽 보기 🚀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/samuelhinchliffe/199-binary-tree-right-side-view-14bp
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var rightSideView = function (root) {
// Base case, no nodes given.
if (!root) {
return [];
}
// An array to store all the right most nodes
const right_view = [];
// A queue for the level order traversal
const queue = [root];
// While the queue is not empty, keep going
while (queue.length) {
// Make note of the queue length.
// We do this to perform row by row traversal.
const q_len = queue.length;
// Iterate through the queue, end at the row
for (let i = 0; i < q_len; i++) {
// Current node
const node = queue.pop();
// If the current index is the end of the row,
// meaning, it's the right most node in the level.
// Push it to the right_view array.
if (i === q_len - 1) {
right_view.push(node.val);
}
// Add them.
node.left ? queue.unshift(node.left) : null;
node.right ? queue.unshift(node.right) : null;
}
}
// Return Home!!
return right_view;
};
Reference
이 문제에 관하여(199. 이진 트리 오른쪽 보기 🚀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/samuelhinchliffe/199-binary-tree-right-side-view-14bp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)