动态数组在内存中是连续存储的,支持 O(1) 的随机访问。当容量不足时,会自动扩容(通常是原来的 2 倍),扩容操作的时间复杂度为 O(n)。
链表的节点在内存中分散存储,每个节点包含数据和指向下一个节点的指针。插入和删除操作只需修改指针,时间复杂度为 O(1),但访问需要从头遍历,时间复杂度为 O(n)。
栈是一种后进先出 (LIFO) 的数据结构,只能在栈顶进行插入和删除操作。常用于函数调用栈、表达式求值、括号匹配等场景。
队列是一种先进先出 (FIFO) 的数据结构,元素从队尾入队,从队头出队。常用于任务调度、消息队列、BFS 遍历等场景。
二叉搜索树的左子树所有节点值小于根节点,右子树所有节点值大于根节点。中序遍历可得到升序序列。平均时间复杂度为 O(log n),最坏情况(退化为链表)为 O(n)。