給定二叉搜索樹(shù)(BST)的根節(jié)點(diǎn)和一個(gè)值邪乍。 你需要在BST中找到節(jié)點(diǎn)值等于給定值的節(jié)點(diǎn)毅舆。 返回以該節(jié)點(diǎn)為根的子樹(shù)衰粹。 如果節(jié)點(diǎn)不存在,則返回 NULL踪危。
例如
給定二叉搜索樹(shù):
4
/ \
2 7
/ \
1 3
和值: 2
你應(yīng)該返回如下子樹(shù):
2
/ \
1 3
在上述示例中蔬浙,如果要找的值是 5,但因?yàn)闆](méi)有節(jié)點(diǎn)值為 5贞远,我們應(yīng)該返回 NULL畴博。
根據(jù)BST的特性,對(duì)于每個(gè)節(jié)點(diǎn):
如果目標(biāo)值等于節(jié)點(diǎn)的值蓝仲,則返回節(jié)點(diǎn);
如果目標(biāo)值小于節(jié)點(diǎn)的值俱病,則繼續(xù)在左子樹(shù)中搜索;
如果目標(biāo)值大于節(jié)點(diǎn)的值,則繼續(xù)在右子樹(shù)中搜索袱结。
代碼:
/**
* 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) {
if (root == null || root.val == val) {
return root;
}
if (root.val > val) {
return searchBST(root.left, val);
} else {
return searchBST(root.right, val);
}
}
}