diff --git a/solution/0700-0799/0700.Search in a Binary Search Tree/README.md b/solution/0700-0799/0700.Search in a Binary Search Tree/README.md index 5d436aebdcfa..f8bbe4294315 100644 --- a/solution/0700-0799/0700.Search in a Binary Search Tree/README.md +++ b/solution/0700-0799/0700.Search in a Binary Search Tree/README.md @@ -32,7 +32,6 @@

在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL

- ## 解法 @@ -44,7 +43,21 @@ ```python - +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def searchBST(self, root: TreeNode, val: int) -> TreeNode: + if root is None: + return None + if root.val == val: + return root + if root.val < val: + return self.searchBST(root.right, val) + return self.searchBST(root.left, val) ``` ### **Java** @@ -52,7 +65,85 @@ ```java +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public TreeNode searchBST(TreeNode root, int val) { + if (root == null) { + return null; + } + if (root.val == val) { + return root; + } + if (root.val < val) { + return searchBST(root.right, val); + } + return searchBST(root.left, val); + } +} +``` + +### **C++** + +```cpp +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + TreeNode* searchBST(TreeNode* root, int val) { + if (root == nullptr) return nullptr; + if (root->val == val) return root; + if (root->val < val) return searchBST(root->right, val); + return searchBST(root->left, val); + } +}; +``` +### **Go** + +```go +/** + * Definition for a binary tree node. + * type TreeNode struct { + * Val int + * Left *TreeNode + * Right *TreeNode + * } + */ +func searchBST(root *TreeNode, val int) *TreeNode { + if root == nil { + return nil + } + if root.Val == val { + return root + } + if root.Val < val { + return searchBST(root.Right, val) + } + return searchBST(root.Left, val) +} ``` ### **...** diff --git a/solution/0700-0799/0700.Search in a Binary Search Tree/README_EN.md b/solution/0700-0799/0700.Search in a Binary Search Tree/README_EN.md index 354dd229850b..0972880de846 100644 --- a/solution/0700-0799/0700.Search in a Binary Search Tree/README_EN.md +++ b/solution/0700-0799/0700.Search in a Binary Search Tree/README_EN.md @@ -33,7 +33,6 @@
  • 1 <= val <= 107
  • - ## Solutions @@ -41,13 +40,105 @@ ### **Python3** ```python - +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def searchBST(self, root: TreeNode, val: int) -> TreeNode: + if root is None: + return None + if root.val == val: + return root + if root.val < val: + return self.searchBST(root.right, val) + return self.searchBST(root.left, val) ``` ### **Java** ```java +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public TreeNode searchBST(TreeNode root, int val) { + if (root == null) { + return null; + } + if (root.val == val) { + return root; + } + if (root.val < val) { + return searchBST(root.right, val); + } + return searchBST(root.left, val); + } +} +``` + +### **C++** + +```cpp +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: + TreeNode* searchBST(TreeNode* root, int val) { + if (root == nullptr) return nullptr; + if (root->val == val) return root; + if (root->val < val) return searchBST(root->right, val); + return searchBST(root->left, val); + } +}; +``` +### **Go** + +```go +/** + * Definition for a binary tree node. + * type TreeNode struct { + * Val int + * Left *TreeNode + * Right *TreeNode + * } + */ +func searchBST(root *TreeNode, val int) *TreeNode { + if root == nil { + return nil + } + if root.Val == val { + return root + } + if root.Val < val { + return searchBST(root.Right, val) + } + return searchBST(root.Left, val) +} ``` ### **...** diff --git a/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.cpp b/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.cpp index 5461901931b8..3b87d7d24e28 100644 --- a/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.cpp +++ b/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.cpp @@ -4,27 +4,17 @@ * int val; * TreeNode *left; * TreeNode *right; - * TreeNode(int x) : val(x), left(NULL), right(NULL) {} + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { - public: +public: TreeNode* searchBST(TreeNode* root, int val) { - - TreeNode* temp = root; - - while( temp != NULL ){ - if( temp->val == val ){ - return temp; - } - else if( val < temp->val ){ - temp = temp->left; - } - else{ - temp = temp->right; - } - } - - return NULL; + if (root == nullptr) return nullptr; + if (root->val == val) return root; + if (root->val < val) return searchBST(root->right, val); + return searchBST(root->left, val); } -}; +}; \ No newline at end of file diff --git a/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.go b/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.go new file mode 100644 index 000000000000..2ce9bb630ecf --- /dev/null +++ b/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.go @@ -0,0 +1,20 @@ +/** + * Definition for a binary tree node. + * type TreeNode struct { + * Val int + * Left *TreeNode + * Right *TreeNode + * } + */ +func searchBST(root *TreeNode, val int) *TreeNode { + if root == nil { + return nil + } + if root.Val == val { + return root + } + if root.Val < val { + return searchBST(root.Right, val) + } + return searchBST(root.Left, val) +} \ No newline at end of file diff --git a/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.java b/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.java index 0bda84ced261..cb752fe7e0bc 100644 --- a/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.java +++ b/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.java @@ -4,14 +4,26 @@ * int val; * TreeNode left; * TreeNode right; - * TreeNode(int x) { val = x; } + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } * } */ class Solution { public TreeNode searchBST(TreeNode root, int val) { - if (root == null) return null; - if (root.val == val) return root; - if (root.val < val) return searchBST(root.right, val); - else return searchBST(root.left, val); + if (root == null) { + return null; + } + if (root.val == val) { + return root; + } + if (root.val < val) { + return searchBST(root.right, val); + } + return searchBST(root.left, val); } -} +} \ No newline at end of file diff --git a/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.py b/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.py index 9dae36304709..f726af72e899 100644 --- a/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.py +++ b/solution/0700-0799/0700.Search in a Binary Search Tree/Solution.py @@ -1,27 +1,15 @@ # Definition for a binary tree node. # class TreeNode: -# def __init__(self, x): -# self.val = x -# self.left = None -# self.right = None - +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right class Solution: - def searchBST(self, root, val): - """ - :type root: TreeNode - :type val: int - :rtype: TreeNode - """ - - temp = root - - while temp != None : - - if temp.val == val : - return temp - elif val < temp.val : - temp = temp.left - else: - temp = temp.right - - return None + def searchBST(self, root: TreeNode, val: int) -> TreeNode: + if root is None: + return None + if root.val == val: + return root + if root.val < val: + return self.searchBST(root.right, val) + return self.searchBST(root.left, val)