본문 바로가기

Algorithm/DFS

(C++) - LeetCode (easy) 700. Search in a Binary Search Tree

반응형

https://leetcode.com/problems/search-in-a-binary-search-tree/description/

 

Search in a Binary Search Tree - LeetCode

Can you solve this real interview question? Search in a Binary Search Tree - You are given the root of a binary search tree (BST) and an integer val. Find the node in the BST that the node's value equals val and return the subtree rooted with that node. If

leetcode.com

재귀를 통해 답을 찾는 문제였습니다.

📕 풀이방법

📔 풀이과정

1. 말단 node에 진입 또는 찾지 못했을 때 기저 case에서 NULL을 반환합니다.2. 현재 node의 val이 찾으려는 val과 같다면 바로 sub tree를 반환합니다.3. tree의 왼쪽과 오른쪽에 대해 재귀함수를 수행하며 찾은 sub tree를 반환해줍니다.


📕 Code

📔 C++

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    TreeNode* searchBST(TreeNode* root, int val) {
        if(root == NULL) return NULL;
        if(root->val == val) {
            return root;
        }
        TreeNode* leftSubTree = searchBST(root->left, val);
        TreeNode* rightSubTree = searchBST(root->right, val);
        if(leftSubTree != NULL) return leftSubTree;
        return rightSubTree;
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.