2020年数据结构考研真题解析如下:
1. 题目:请实现一个栈,支持入栈、出栈、判断栈空、获取栈顶元素操作。
答案:使用链表实现栈,具体代码如下:
```python
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
return None
def peek(self):
if not self.is_empty():
return self.items[-1]
return None
def is_empty(self):
return len(self.items) == 0
```
2. 题目:请实现一个队列,支持入队、出队、判断队列空、获取队首元素操作。
答案:使用链表实现队列,具体代码如下:
```python
class Queue:
def __init__(self):
self.items = []
def enqueue(self, item):
self.items.append(item)
def dequeue(self):
if not self.is_empty():
return self.items.pop(0)
return None
def peek(self):
if not self.is_empty():
return self.items[0]
return None
def is_empty(self):
return len(self.items) == 0
```
3. 题目:请实现一个二叉树,支持插入、删除、查找、遍历操作。
答案:使用链表实现二叉树,具体代码如下:
```python
class TreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
class BinaryTree:
def __init__(self):
self.root = None
def insert(self, value):
if not self.root:
self.root = TreeNode(value)
else:
self._insert_recursive(self.root, value)
def _insert_recursive(self, node, value):
if value < node.value:
if not node.left:
node.left = TreeNode(value)
else:
self._insert_recursive(node.left, value)
else:
if not node.right:
node.right = TreeNode(value)
else:
self._insert_recursive(node.right, value)
def delete(self, value):
self.root = self._delete_recursive(self.root, value)
def _delete_recursive(self, node, value):
if not node:
return None
if value < node.value:
node.left = self._delete_recursive(node.left, value)
elif value > node.value:
node.right = self._delete_recursive(node.right, value)
else:
if not node.left:
return node.right
elif not node.right:
return node.left
else:
min_larger_node = self._find_min(node.right)
node.value = min_larger_node.value
node.right = self._delete_recursive(node.right, min_larger_node.value)
return node
def _find_min(self, node):
while node.left:
node = node.left
return node
def search(self, value):
return self._search_recursive(self.root, value)
def _search_recursive(self, node, value):
if not node:
return False
if value == node.value:
return True
elif value < node.value:
return self._search_recursive(node.left, value)
else:
return self._search_recursive(node.right, value)
def inorder_traversal(self):
self._inorder_recursive(self.root)
print()
def _inorder_recursive(self, node):
if node:
self._inorder_recursive(node.left)
print(node.value, end=' ')
self._inorder_recursive(node.right)
```
更多考研刷题资料,请关注微信小程序:【考研刷题通】,包含政治刷题、英语刷题、数学等全部考研科目,助你高效备考!