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);
    }
}
全部评论

相关推荐

迷茫的大四🐶:干脆大厂搞个收费培训得了,这样就人均大厂了
点赞 评论 收藏
分享
秋招投简历提醒助手:个人经验是,一般面二十场左右就会进入侃侃而谈阶段。我今年七月末的时候开始的第一次面试,都是很多不会,回复很慢。后面慢慢迭代,到九月中的时候基本上面啥说啥,很放松的状态
远程面试的尴尬瞬间
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务