Home 数据结构介绍(二)
Post
Cancel

数据结构介绍(二)

6. 二叉搜索树(Binary Search Tree,BST):

二叉搜索树是一种特殊的二叉树,它满足左子节点的值小于根节点,右子节点的值大于根节点。

特点:

  • 有序性:树的结构使得查找、插入和删除操作具有较高效率。
  • 常用于有序数据的存储和搜索。

Python 示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class TreeNode:
    def __init__(self, value):
        self.value = value
        self.left = None
        self.right = None

def insert(root, value):
    if root is None:
        return TreeNode(value)
    if value < root.value:
        root.left = insert(root.left, value)
    else:
        root.right = insert(root.right, value)
    return root

# 创建一个二叉搜索树
root = None
values = [5, 3, 8, 1, 4, 7, 9]
for value in values:
    root = insert(root, value)

7. 堆(Heap):

堆是一种基于树的数据结构,具有特定的性质,例如最大堆中每个节点的值都大于或等于其子节点的值。

特点:

  • 堆的根节点是最大或最小值,用于高效地查找和删除。
  • 常用于优先级队列、排序算法等。

Python 示例:

1
2
3
4
5
6
7
8
import heapq

heap = []
heapq.heappush(heap, 3)
heapq.heappush(heap, 1)
heapq.heappush(heap, 2)

print(heapq.heappop(heap))  # 弹出并输出最小值:1

8. 图(Graph):

图是一种非线性数据结构,由节点和边组成,用于表示对象之间的关系。

特点:

  • 节点和边:图由节点(顶点)和边(连接节点的线)组成。
  • 可用于表示社交网络、地图、网络等。

Python 示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Graph:
    def __init__(self):
        self.graph = {}

    def add_edge(self, from_node, to_node):
        if from_node not in self.graph:
            self.graph[from_node] = []
        self.graph[from_node].append(to_node)

# 创建一个图
graph = Graph()
graph.add_edge('A', 'B')
graph.add_edge('A', 'C')
graph.add_edge('B', 'C')

9. 哈希表(Hash Table):

哈希表是一种用于存储键-值对的数据结构,通过哈希函数将键映射到对应的索引。

特点:

  • 高效的插入、查找和删除操作,平均情况下具有常数时间复杂度。
  • 常用于字典、缓存等。

Python 示例:

1
2
3
4
5
hash_table = {}
hash_table['name'] = 'Alice'
hash_table['age'] = 25

print(hash_table['name'])  # 输出:Alice
This post is licensed under CC BY 4.0 by the author.

数据结构介绍(一)

常见排序算法介绍(一)