700. 二叉搜索树中的搜索
给定二叉搜索树(BST)的根节点 root 和一个整数值 val。
你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。
示例 1:
输入:root = [4,2,7,1,3], val = 2
输出:[2,1,3]
示例 2:
输入:root = [4,2,7,1,3], val = 5
输出:[]
思路:递归搜索二叉树。
- 确定递归函数返回值和参数列表:返回值为节点值等于val的节点,参数列表为根节点和要搜索的val值。
- 确定终止条件:如果当前节点为空或者找到了要搜索的节点,就返回该节点。
- 确定单层递归逻辑:如果当前节点值大于要搜索的值,就搜索左子树;如果小于要搜索的值,就搜索右子树。如果左右子树找不到该值,返回空。
代码:
class Solution { //700. 二叉搜索树中的搜索
public:
TreeNode* searchBST(TreeNode* root, int val) {
if (root == nullptr || root->val == val) return root;
if (root->val > val)return searchBST(root->left, val);
if (root->val < val)return searchBST(root->right, val);
return nullptr;
}
};