31 Search in a Binary Search Tree

关注 每天一道编程题 专栏,一起学习进步。

题目

Given the root node of a binary search tree (BST) and a value. You need to find the node in the BST that the node’s value equals the given value. Return the subtree rooted with that node. If such node doesn’t exist, you should return NULL.

For example,

Given the tree:

    4
   / \
  2   7
 / \
1   3

And the value to search: 2

You should return this subtree:

  2     
 / \   
1   3

In the example above, if we want to search the value 5, since there is no node with value 5, we should return NULL.

Note that an empty tree is represented by NULL, therefore you would see the expected output (serialized tree format) as [], not null.

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        
    }
}

分析

题意:给定一颗二叉搜索树,找出以特定值为根节点的子树;若该值不存在,则返回null.

简单的深度遍历,注意利用二叉搜索树的特性即可:左<根<右

解答

class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
    	// 递归终点,root为空说明不存在,root.val==val说明已找到
        if(root==null || root.val==val)
            return root;
        // 根据二叉搜索树的特性,比较目标值决定遍历方向
        if(root.val>val)
            return searchBST(root.left,val);
        else
            return searchBST(root.right,val);
    }
}
发布了118 篇原创文章 · 获赞 26 · 访问量 8007

猜你喜欢

转载自blog.csdn.net/weixin_43367550/article/details/104473470