二叉搜索树的定义:
一颗空树或者具有以下性质的二叉树:
- 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
- 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
- 任意节点的左、右子树也分别为二叉查找树;
二叉搜索树是平衡树吗?
二叉搜索树不一定是平衡树。
二叉搜索树的搜索时间复杂度是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);
}
}