题目描述
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.
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.
方法思路
Approach1: recursive
class Solution {
public TreeNode searchBST(TreeNode root, int val) {
if(root == null) return root;
if(val == root.val) return root;
if(val < root.val)
root = root.left;
else
root = root.right;
return searchBST(root, val);
}
}
Approach2: 将尾递归改为非递归的形式
class Solution{
//Runtime: 1 ms, faster than 100.00%
public TreeNode searchBST(TreeNode root, int val){
if(root == null) return root;
if(val == root.val) return root;
while(root != null){
if(val == root.val)
return root;
else if(val < root.val)
root = root.left;
else
root = root.right;
}
return null;
}
}

本文介绍了一种在二叉搜索树中查找特定值节点的方法,包括递归和非递归两种实现方式。通过这两种方法,可以有效地找到目标节点或返回空值,适用于各种二叉搜索树操作场景。
4074

被折叠的 条评论
为什么被折叠?



