Leetcode700.二叉搜索树中搜索具体值

二叉搜索树的定义:

一颗空树或者具有以下性质的二叉树:

  1. 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
  2. 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
  3. 任意节点的左、右子树也分别为二叉查找树;

二叉搜索树是平衡树吗?

二叉搜索树不一定是平衡树。

二叉搜索树的搜索时间复杂度是O(log n),关于时间复杂度,可以参考:平衡二叉搜索树查找的时间复杂度为什么是O(log n)?

根据二叉搜索树的定义,如果目标值比节点值大,则搜索右子树,如果目标值比节点值小,则搜索左子树。

核心还是递归。

java 复制代码
class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if (root == null) {
            return null;
        }
        if (val == root.val) {
            return root;
        }
        /**
         * 例如:
         * 搜索3,3<4成立,则搜索2
         * 搜索6,6<4不成立 ,则搜索7
         */
        return searchBST(val < root.val ? root.left : root.right, val);
    }
}
相关推荐
Irissgwe5 天前
AVL树详解
数据结构·c++·算法·二叉树·c·二叉搜索树·avl
Irissgwe6 天前
二叉树进阶
数据结构·c++·算法·c·二叉搜索树
码上有光12 天前
c++:二叉搜索树(map和set的底层结构)
开发语言·c++·递归·二叉搜索树
8Qi814 天前
LeetCode 235. 二叉搜索树的最近公共祖先(LCA)
算法·leetcode·二叉树·递归·二叉搜索树·lca·迭代
少司府18 天前
C++进阶:二叉搜索树
开发语言·数据结构·c++·二叉树·stl·二叉搜索树·tree
汉克老师21 天前
GESP6级C++考试语法知识(三十四、二叉搜索树(BST)(四、BST的退化))
c++·二叉搜索树·bst·gesp6级·gesp六级
handler0122 天前
【C++】二叉搜索树详解及其模拟实现(代码)
开发语言·c++·算法·c··二叉搜索树·搜索树
燃于AC之乐4 个月前
二叉搜索树全解:理论剖析、代码实现与场景应用
c++·二叉搜索树·性能分析·算法实现·键值存储
Tisfy4 个月前
LeetCode 1382.将二叉搜索树变平衡:分治——求得所有节点再重新建树
leetcode·二叉树·深度优先·dfs·题解·二叉搜索树·平衡二叉树
老鼠只爱大米5 个月前
LeetCode经典算法面试题 #230:二叉搜索树中第K小的元素(递归法、迭代法、Morris等多种实现方案详细解析)
算法·leetcode·二叉搜索树·二叉树遍历·第k小的元素·morris遍历