zoukankan      html  css  js  c++  java
  • Leetcode700. 二叉搜索树中的搜索

    题意

    在二叉搜索树中查找指定节点并返回以它为根的子树,如果不存在则返回NULL

    思路

    • 1⃣️迭代法。利用BST的性质,我们知道当前节点的值比目标值小时就往右走,反之就往左走。不存在回溯的问题,所以也不需要使用栈。
    • 2⃣️递归法。思路也差不多,根据不同情况往左或往右递归即可

    代码(迭代法)

    class Solution {
    public:
        TreeNode* searchBST(TreeNode* root, int val) {
            TreeNode* ans = root;
            while(ans && ans->val != val)
            {
                if(ans->val < val)
                    ans = ans->right;
                else
                    ans = ans->left;
            }
            return ans;
        }
    };
    

    代码(递归法)

    class Solution {
    public:
        TreeNode* search(TreeNode *cur, int target)
        {
            if(cur == NULL || cur-> val == target) return cur;
            if(target < cur->val)   return search(cur->left, target);
            if(target > cur->val)   return search(cur->right, target);
            return NULL;
        }
        TreeNode* searchBST(TreeNode* root, int val) {
            TreeNode *ans = search(root, val);
            return ans;
        }
    };
    
    如有转载,请注明出处QAQ
  • 相关阅读:
    关于http请求头的一些事
    关于http抓取字段的一些事
    多线程的一些事
    正则的一些事
    出现问题集及解决方案
    常见的正则
    Http常见状态码
    list&tuple简记
    函数式编程--高阶函数--sorted
    函数式编程--高阶函数--filter
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/13554541.html
Copyright © 2011-2022 走看看