【二叉树】【打卡115天】leetCode每日一题:700. 二叉搜索树中的搜索

1、题目描述

给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。

2、算法分析

使用递归。题目说的是二叉搜索树,也就是有序的。当前结点的值大于左子树的结点值。当前结点值小于右子树的任意结点值。

使用递归找到对应的的结点即可。

return searchBST(root.val < val ? root.right : root.left,val);

看下TreeNode的定义:


//  Definition for a binary tree node.
public class TreeNode {
      int val; // 结点值
      TreeNode left; // 左孩子结点指针
      TreeNode right; // 右孩子结点指针
      TreeNode() {}
      TreeNode(int val) { this.val = val; }
      TreeNode(int val, TreeNode left, TreeNode right) {  // 构造方法
          this.val = val;
          this.left = left;
          this.right = right;
      }
  }
 

3、代码实现

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if(root == null){
            return null;
        }
        if(root.val == val){
            return root;
        }
        return searchBST(root.val < val ? root.right : root.left,val);
    }
}

Guess you like

Origin blog.csdn.net/Sunshineoe/article/details/121556746