📜  数据结构概述 |设置 2(二叉树、BST、堆和哈希)(1)

📅  最后修改于: 2023-12-03 15:26:09.737000             🧑  作者: Mango

数据结构概述 |设置 2(二叉树、BST、堆和哈希)

一、二叉树

二叉树是一种非线性数据结构,每个节点最多有两个子节点。二叉树的遍历有三种方式:前序遍历、中序遍历和后序遍历。

二叉树的节点定义如下:

class Node:
    def __init__(self, value):
        self.left = None
        self.right = None
        self.value = value
二、BST(二叉搜索树)

BST是一种特殊的二叉树,左子树的所有节点的值都小于根节点的值,右子树的所有节点的值都大于根节点的值。BST的查找、插入、删除操作的时间复杂度均为O(log n)。

BST节点的定义与二叉树节点的定义相同。

三、堆

堆是一种特殊的树形数据结构,其中每个父节点的值都比其子节点的值大或小,分别称为最大堆和最小堆。堆一般用于实现优先队列。

堆节点的定义如下:

class Heap:
    def __init__(self):
        self.data = []
    
    def push(self, val):
        # 向堆中添加元素
        pass
        
    def pop(self):
        # 弹出堆顶元素
        pass
四、哈希

哈希表是一种以键值对形式存储数据的数据结构。哈希函数将键映射为哈希表中的一个索引,该索引对应的单元存储该键值对。哈希表的查找、插入、删除操作的时间复杂度均为O(1)。

哈希表节点的定义如下:

class HashTable:
    def __init__(self):
        self.size = 10
        self.table = [[] for _ in range(self.size)]
    
    def hash_function(self, key):
        # 哈希函数
        pass
        
    def insert(self, key, value):
        # 插入键值对
        pass
        
    def find(self, key):
        # 查找键对应的值
        pass
        
    def delete(self, key):
        # 删除键值对
        pass