题目
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: 2You 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;
}
}