题目

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.

题目地址

讲解

要注意一下的是,如果我们searchBST作为递归函数,我们就要返回一个TreeNode类型,虽然返回,但我们不一定会用到。如果我们找到了,就把treeNode标记为结果结点。

Java代码

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

liuqinh2s
42 声望13 粉丝

认真写代码,搞创作