zoukankan      html  css  js  c++  java
  • 刷题-力扣-700. 二叉搜索树中的搜索

    700. 二叉搜索树中的搜索

    题目链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/search-in-a-binary-search-tree
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题目描述

    给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。

    例如,

    给定二叉搜索树:
    
            4
           / 
          2   7
         / 
        1   3
    
    和值: 2
    

    你应该返回如下子树:

          2     
         /    
        1   3
    

    在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。

    题目分析

    1. 根据题目描述在二叉搜索树中查找指定值
    2. 利用二叉搜索树的特点二分查找
    3. 若val小于root->val,则进入左子树,若val大于root->right,则进入右子树

    代码

    /**
     * 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) return nullptr;
            if (root->val == val) return root;
            if (root->val > val) return searchBST(root->left, val);
            else return searchBST(root->right, val);
        }
    };
    
  • 相关阅读:
    POJ2406【KMP-next数组】
    POJ2752【KMP-next数组含义】
    POJ3696【欧拉函数+欧拉定理】
    POJ3692【二分匹配】
    POJ3697【BFS】
    CodeForces599D【数学】
    CodeForces599C【贪心】
    HDU1829【种类并查集】
    HDU3038【种类并查集】
    POJ1182【种类并查集】
  • 原文地址:https://www.cnblogs.com/HanYG/p/15171976.html
Copyright © 2011-2022 走看看