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

相关推荐

点赞 评论 收藏
分享
笑死&nbsp;不是哥们离校了我真要睡街了&nbsp;加上还有几w的贷款&nbsp;不接受我准备去当三和大神
梦想是成为七海千秋:没事,hr这下就有底气了,下次遇到一个不接受的就说,你看,人家这学历都接受了,你凭什么不接受
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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