mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 04:06:51 +08:00
Update 0700.二叉搜索树中的搜索.md
添加 0700.二叉搜索树中的搜索 Java版本,4种解法
This commit is contained in:
@ -142,7 +142,78 @@ public:
|
||||
|
||||
|
||||
Java:
|
||||
```Java
|
||||
class Solution {
|
||||
// 递归
|
||||
public TreeNode searchBST(TreeNode root, int val) {
|
||||
if (root == null || root.val == val) {
|
||||
return root;
|
||||
}
|
||||
TreeNode left = searchBST(root.left, val);
|
||||
if (left != null) {
|
||||
return left;
|
||||
}
|
||||
return searchBST(root.right, val);
|
||||
}
|
||||
}
|
||||
|
||||
class Solution {
|
||||
// 递归,利用二叉搜索树特点,优化
|
||||
public TreeNode searchBST(TreeNode root, int val) {
|
||||
if (root == null || root.val == val) {
|
||||
return root;
|
||||
}
|
||||
if (val < root.val) {
|
||||
return searchBST(root.left, val);
|
||||
} else {
|
||||
return searchBST(root.right, 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) {
|
||||
if (root == null || root.val == val) {
|
||||
return root;
|
||||
}
|
||||
while (root != null) {
|
||||
if (root.val == val) {
|
||||
return root;
|
||||
} else if (val < root.val) {
|
||||
root = root.left;
|
||||
} else {
|
||||
root = root.right;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Python:
|
||||
|
||||
|
Reference in New Issue
Block a user