- 思路
首先明确这是一棵二叉搜索树,左小右大,利用这个特征,一直判断至叶子节点,若无则返回null,若有则返回对应的节点。
采用前序的递归遍历,添加对应条件进行相关处理。
递归三要素
递归函数的参数和返回值:参数就是树节点(来自上层节点的子节点)和目标值,返回值为null或对应的树节点;
递归的终止条件:节点为null,返回null,节点为叶子节点且值相等,返回此节点;
递归的单层逻辑:当前节点的值不等于目标值,则进入下一层,若目标值大于当前节点,进右子树,若目标值小于当前节点,进左子树。
class Solution {
public TreeNode searchBST(TreeNode root, int val) {
if (root == null) {
return null;
}
if (val == root.val) {
return root;
}
if (val > root.val) {
return searchBST(root.right, val);
}
if (val < root.val) {
return searchBST(root.left, val);
}
return null;
}
}