mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
Merge pull request #108 from Joshua-Lu/patch-25
更新 0700.二叉搜索树中的搜索 Java版本
This commit is contained in:
@ -141,24 +141,62 @@ public:
|
|||||||
## 其他语言版本
|
## 其他语言版本
|
||||||
|
|
||||||
Java:
|
Java:
|
||||||
递归法:
|
|
||||||
|
|
||||||
|
```Java
|
||||||
```java
|
|
||||||
class Solution {
|
class Solution {
|
||||||
|
// 递归,普通二叉树
|
||||||
public TreeNode searchBST(TreeNode root, int val) {
|
public TreeNode searchBST(TreeNode root, int val) {
|
||||||
if (root == null) return null;
|
if (root == null || root.val == val) {
|
||||||
if (root.val == val) return root;
|
return root;
|
||||||
else if (root.val > val) return searchBST(root.left, val);
|
}
|
||||||
else return searchBST(root.right, val);
|
TreeNode left = searchBST(root.left, val);
|
||||||
|
if (left != null) {
|
||||||
|
return left;
|
||||||
|
}
|
||||||
|
return searchBST(root.right, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
|
||||||
|
|
||||||
迭代法:
|
|
||||||
|
|
||||||
```java
|
|
||||||
class Solution {
|
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) {
|
public TreeNode searchBST(TreeNode root, int val) {
|
||||||
while (root != null)
|
while (root != null)
|
||||||
if (val < root.val) root = root.left;
|
if (val < root.val) root = root.left;
|
||||||
|
Reference in New Issue
Block a user