Search for val in the linked list @param val: value to be searched @return: The node that contains the value if valu is found None otherwise
时间: 2024-02-13 10:07:38 浏览: 21
好的,这是一个寻找链表中某个值的函数,可以使用以下 Python 代码实现:
```
def search_linked_list(head, val):
node = head
while node:
if node.val == val:
return node
node = node.next
return None
```
其中,head是链表的头节点,val是需要查找的值。函数从头节点开始遍历链表,如果找到了值为val的节点,则返回该节点;否则返回None。
相关问题
class BSTree: """ The binary search tree """ def __init__(self, val): """ Initializae the BSTree """ # Your code here pass def search(self, val): """ Search for a value in the tree, and return the tree node @return: the tree node that contain the val None if val is not in the tree """ # Your code here pass def insert(self, val): """ Insert a value """ # Your code here pass def delete(self, val): """ Delete a value from the tree """ # Your code here pass def toList(self, val): """ Convert tree values into a list in in-order traversal """ # Your code here pass
以下是一个二叉搜索树(Binary Search Tree)的 Python 实现,包括了插入、删除、搜索和转换为列表等方法。
```python
class TreeNode:
"""The tree node class"""
def __init__(self, val):
self.val = val
self.left = None
self.right = None
class BSTree:
"""The binary search tree"""
def __init__(self, val):
"""Initialize the BSTree"""
self.root = TreeNode(val)
def search(self, val):
"""Search for a value in the tree, and return the tree node
@return: the tree node that contain the val
None if val is not in the tree
"""
curr_node = self.root
while curr_node:
if curr_node.val == val:
return curr_node
elif curr_node.val > val:
curr_node = curr_node.left
else:
curr_node = curr_node.right
return None
def insert(self, val):
"""Insert a value"""
new_node = TreeNode(val)
if not self.root:
self.root = new_node
return
curr_node = self.root
while curr_node:
if curr_node.val > val:
if curr_node.left:
curr_node = curr_node.left
else:
curr_node.left = new_node
return
else:
if curr_node.right:
curr_node = curr_node.right
else:
curr_node.right = new_node
return
def delete(self, val):
"""Delete a value from the tree"""
def find_min_node(node):
while node.left:
node = node.left
return node
def delete_node(node, val):
if not node:
return None
if node.val == val:
if not node.left and not node.right:
return None
if not node.left:
return node.right
if not node.right:
return node.left
min_node = find_min_node(node.right)
node.val = min_node.val
node.right = delete_node(node.right, min_node.val)
elif node.val > val:
node.left = delete_node(node.left, val)
else:
node.right = delete_node(node.right, val)
return node
self.root = delete_node(self.root, val)
def toList(self):
"""Convert tree values into a list in in-order traversal"""
res = []
def inorder_traversal(node):
if not node:
return
inorder_traversal(node.left)
res.append(node.val)
inorder_traversal(node.right)
inorder_traversal(self.root)
return res
```
使用方法:
```python
bst = BSTree(5)
bst.insert(3)
bst.insert(7)
bst.insert(2)
bst.insert(4)
bst.insert(6)
bst.insert(8)
print(bst.toList()) # [2, 3, 4, 5, 6, 7, 8]
bst.delete(5)
print(bst.toList()) # [2, 3, 4, 6, 7, 8]
node = bst.search(7)
print(node.val) # 7
```
TreeNode* min_node = FindMin(root); cout << "The minimum value in the tree is: " << min_node->val << endl; return 0; }用一段代码测试以上代码
确保测试代码中包含有Tree的数据结构定义和FindMin函数的实现。
下面是一个简单的示例:
```c++
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
TreeNode* FindMin(TreeNode* root){
if(root->left != NULL)
return FindMin(root->left);
else
return root;
}
int main() {
// Create a test tree
TreeNode* root = new TreeNode(5);
root->left = new TreeNode(4);
root->right = new TreeNode(6);
root->left->left = new TreeNode(2);
root->left->right = new TreeNode(3);
root->left->left->left = new TreeNode(1);
// Find and print the minimum value in the tree
TreeNode* min_node = FindMin(root);
cout << "The minimum value in the tree is: " << min_node->val << endl;
return 0;
}
```
测试结果会输出:The minimum value in the tree is: 1