JAVA版本
解法一:
使用递归的解法,主要是利用二叉搜索数的特性来完成。
class Solution {
public TreeNode searchBST(TreeNode root, int val) {
if(root ==null || root.val ==val) {
return root;
}
if(root.val < val) { //二叉搜索树的性质来完成
return searchBST(root.right,val);
}else{
return searchBST(root.left,val);
}
}
}
解法二:使用二叉树的迭代法,使用栈来直接完成迭代的过程,不使用二叉搜索树的特性。
class Solution {
public TreeNode searchBST(TreeNode root, int val) {
if(root ==null || root.val ==val) {
return root;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while(!stack.isEmpty()) {
TreeNode pop = stack.pop();
if(pop.val == val){
return pop;
}
if (pop.right != null) {
stack.push(pop.right);
}
if (pop.left != null) {
stack.push(pop.left);
}
}
return null;
}
}
解法三:使用二叉搜索树的特性来完成迭代。
class Solution {
// 迭代,利用二叉搜索树特点,优化,可以不需要栈
public TreeNode searchBST(TreeNode root, int val) {
while (root != null)
if (val < root.val) root = root.left;
else if (val > root.val) root = root.right;
else return root;
return null;
}
}
本文介绍了三种在二叉搜索树中查找特定值的方法:一是使用递归,二是采用迭代但不依赖二叉搜索树特性,三是迭代并利用二叉搜索树的特性,直接更新根节点。每种方法都提供了JAVA实现。
852

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



