700. 이진 검색 트리에서 검색 🚀
솔루션 개발:
질문
이 기사에서는 Leetcode의 '700. Search in a Binary Search Tree' 질문을 다룰 것입니다.
의문:
You are given the
root
of a binary search tree (BST) and an integerval
.
Find the node in the BST that the node's value equals val and return the subtree rooted with
that node. If such a node does not exist, returnnull
.Example:
Input: root = [4,2,7,1,3], val = 2
Output: [2,1,3]
질문 설명
이 질문의 등급은 쉬움입니다. 대부분 정확합니다. 그러나 이것은 이진 검색 트리에 대한 기본적인 이해가 있는 경우에만 쉽습니다. 그렇지 않다면 이 질문으로 인해 곤란한 하루를 보내게 될 것입니다.
우리가 요구하는 것은 BST에서 숫자를 찾는 것입니다. 번호가 BST에 없으면
null
를 반환합니다. 숫자가 BST에 있는 경우 해당 숫자를 루트로 하는 하위 트리를 반환합니다.권장 지식
우리는 무엇을 알고 있습니까?
어떻게 할 것인가:
node
로 이동하여 주어진 값이 우리가 찾아야 하는 값보다 큰지 작은지 묻습니다. node
마다 확인해야 합니다. node
잎사귀node
입니까? 이 경우, 우리는 우리가 찾는 것을 찾지 못한 목록의 끝에 도달했습니다. node
가 우리가 찾고 있던 것입니까?'라고 묻습니다. 값을 비교하여 이를 수행합니다. 동일하면 찾았으므로 node
를 반환합니다. node
에 적용됩니다. 여기서 현재 값이 우리가 찾고 있는 값보다 작으면 더 큰 숫자가 있는 곳임을 알기 때문에 오른쪽으로 이동합니다. 빅오 표기법:
node
s의 수이며 이동할 때마다 검색 트리를 반으로 나누기 때문에 트리에 로그가 있습니다. 대수입니다. 분할 정복 알고리즘을 사용하고 있습니다리트코드 결과:
제출 링크 참조:
해결책
var searchBST = function (root, val) {
// We have reached a leaf node
// This mean's we never found the
// node we was looking for.
if (!root) {
return null;
}
// We found the node we're looking for
// Return it.
if (root.val === val) {
return root;
}
// The 2 parts below only make sense if you understand
// Binary Search Trees. It helps if you understand divide and conquer algorithms.
// Like Binary search.
// So we know the value we're looking for
// if greater than the current node, thus
// the node we're looking for is somewhere on the right tree
if (val > root.val) {
return searchBST(root.right, val);
}
// So the value we're searching for is less than the current node
// which means the node we're looking for exists somewhere on
// the left side.
if (val < root.val) {
return searchBST(root.left, val);
}
};
Reference
이 문제에 관하여(700. 이진 검색 트리에서 검색 🚀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/samuelhinchliffe/700-search-in-a-binary-search-tree-1mpn
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var searchBST = function (root, val) {
// We have reached a leaf node
// This mean's we never found the
// node we was looking for.
if (!root) {
return null;
}
// We found the node we're looking for
// Return it.
if (root.val === val) {
return root;
}
// The 2 parts below only make sense if you understand
// Binary Search Trees. It helps if you understand divide and conquer algorithms.
// Like Binary search.
// So we know the value we're looking for
// if greater than the current node, thus
// the node we're looking for is somewhere on the right tree
if (val > root.val) {
return searchBST(root.right, val);
}
// So the value we're searching for is less than the current node
// which means the node we're looking for exists somewhere on
// the left side.
if (val < root.val) {
return searchBST(root.left, val);
}
};
Reference
이 문제에 관하여(700. 이진 검색 트리에서 검색 🚀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/samuelhinchliffe/700-search-in-a-binary-search-tree-1mpn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)