700.二叉搜索树中的搜索
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。
例如,
在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。
很简单的一题。递归,当前结点为空时,返回空,当前结点比目标数大,则查左子树,否则查右子树,若相等,则返回。因为二叉搜索树是中序非递减的。即有序的,二分法思想。
package com.programmercarl.tree;
/**
* @ClassName SearchBST
* @Descriotion TODO
* @Author nitaotao
* @Date 2022/7/5 21:17
* @Version 1.0
* https://leetcode.cn/problems/search-in-a-binary-search-tree/
* 700. 二叉搜索树中的搜索
**/
public class SearchBST {
/**
* BST,又叫平衡二叉树,是一种循关键码访问的二叉树,
* 并且要求保持顺序性,即任一节点不小于其左后代,不大于其右后代(注意是后代,不是孩子)。
* BST的顺序性使得其中序遍历序列一定是单调非降的。
*
* @param root
* @param val
* @return
*/
public TreeNode searchBST(TreeNode root, int val) {
if (root == null) {
return null;
}
if (root.val == val) {
return root;
} else if (root.val < val) {
//当前值比目标值小,在右子树上搜
return searchBST(root.right, val);
} else {
//当前值比目标值大,在左子树上搜
return searchBST(root.left, val);
}
}
}