给定二叉搜索树(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
    输出:[]

    遍历二叉树,若节点值和目标值相等,则返回以此节点为根节点的树即可

    1. TreeNode targetNode = null;
    2. public TreeNode searchBST(TreeNode root, int val) {
    3. inOrder(root, val);
    4. return targetNode;
    5. }
    6. private void inOrder(TreeNode node, int val) {
    7. if (node == null) {
    8. return;
    9. }
    10. inOrder(node.left, val);
    11. if (node.val == val) {
    12. targetNode = node;
    13. }
    14. inOrder(node.right,val);
    15. }

    也可以递归搜索二叉树搜索树,因为二叉搜索树的特点:

    • 左子树的值都比根节点的值小
    • 右子树的值都比根节点的值大

    即若根节点不是目标值,那么若目标值比根节点的值小,则继续从左子树搜索,反之继续从右子树搜索

    1. public TreeNode searchBST(TreeNode root, int val) {
    2. if (root == null) {
    3. return null;
    4. }
    5. if (val == root.val) {
    6. return root;
    7. }
    8. return searchBST(val < root.val ? root.left : root.right, val);
    9. }