赞
踩
作者主页: 知孤云出岫
在数组中插入一个元素的时间复杂度是()。
A. O(1)
B. O(n)
C. O(log n)
D. O(n^2)
在堆排序中,构建一个最大堆的时间复杂度是()。
A. O(n)
B. O(n log n)
C. O(log n)
D. O(n^2)
红黑树是一种()。
A. 完全二叉树
B. 平衡二叉树
C. 最小堆
D. 最大堆
以下关于哈希表的说法错误的是()。
A. 哈希表的查找时间复杂度为O(1)
B. 哈希表的插入时间复杂度为O(1)
C. 哈希表可以解决冲突
D. 哈希表的查找时间复杂度一定是O(1)
在图的遍历中,深度优先搜索(DFS)和广度优先搜索(BFS)的时间复杂度分别是()。
A. O(V + E) 和 O(V)
B. O(V^2) 和 O(V)
C. O(V + E) 和 O(V + E)
D. O(V) 和 O(V^2)
单向链表反转的时间复杂度是()。
A. O(1)
B. O(n)
C. O(log n)
D. O(n^2)
在二叉搜索树中,删除一个节点的最坏时间复杂度是()。
A. O(1)
B. O(n)
C. O(log n)
D. O(n log n)
以下哪种排序算法的平均时间复杂度是O(n log n)()。
A. 冒泡排序
B. 快速排序
C. 插入排序
D. 选择排序
在二叉树中,节点的度是指()。
A. 该节点的子节点数
B. 该节点的深度
C. 该节点的高度
D. 该节点的层次
B树和B+树的主要区别是()。
A. B树的所有节点都存储数据,而B+树只有叶子节点存储数据
B. B树比B+树更平衡
C. B树的插入和删除操作更简单
D. B+树的查找效率更低
请实现一个函数,用于判断一个链表是否为回文链表。
def is_palindrome(head):
# 请在这里编写代码
请编写代码实现二叉搜索树的插入操作。
class TreeNode:
def __init__(self, key):
self.left = None
self.right = None
self.val = key
def insert(root, key):
# 请在这里编写代码
给定一个图,用邻接矩阵表示,请实现广度优先搜索(BFS)。
def bfs(graph, start):
# 请在这里编写代码
红黑树的性质:
红黑树保持平衡的方式:
动态数组和链表的区别:
哈希表的原理:
判断链表是否为回文链表:
class ListNode: def __init__(self, x): self.val = x self.next = None def is_palindrome(head): # 使用快慢指针找到链表中点 slow = fast = head while fast and fast.next: slow = slow.next fast = fast.next.next # 反转后半部分链表 prev = None while slow: temp = slow.next slow.next = prev prev = slow slow = temp # 比较前半部分和后半部分 left, right = head, prev while right: if left.val != right.val: return False left = left.next right = right.next return True
二叉搜索树的插入操作:
class TreeNode:
def __init__(self, key):
self.left = None
self.right = None
self.val = key
def insert(root, key):
if root is None:
return TreeNode(key)
if key < root.val:
root.left = insert(root.left, key)
else:
root.right = insert(root.right, key)
return root
广度优先搜索(BFS):
from collections import deque
def bfs(graph, start):
visited = [False] * len(graph)
queue = deque([start])
visited[start] = True
result = []
while queue:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。