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);
    }
}
相关推荐
️南城丶北离1 个月前
[算法]二叉搜索树(BST)
数据结构·算法·二叉搜索树
Betty’s Sweet1 个月前
探索数据结构:二叉搜索树的递归与非递归实现
开发语言·数据结构·c++·二叉搜索树·k模型·kv模型
灯火消逝的码头2 个月前
咬文嚼图式的介绍二叉树、B树/B-树
b树·二叉树·二叉搜索树·b-tree·中序遍历·b-树·排序二叉树
青釉Oo2 个月前
数字流的秩
java·数据结构·算法·leetcode·二叉搜索树
加勒比之杰克4 个月前
【平衡二叉树】AVL树(双旋)
set·map·二叉搜索树·平衡二叉树·avl树·双旋
wang_nn4 个月前
【面试经典 150 | 分治】将有序数组转换为二叉搜索树
c++·二叉搜索树·分治·面试经典150
wang_nn5 个月前
【面试经典 150 | 二叉树】二叉搜索树迭代器
c++·面试·递归·二叉搜索树·迭代
月球程序猿5 个月前
说说你对数据结构-树的理解
数据结构·前缀树·红黑树·二叉搜索树·平衡二叉树·哈夫曼树
伟大的车尔尼6 个月前
二叉搜索树题目:序列化和反序列化二叉搜索树
二叉树··二叉搜索树