数据结构的存储方式:数组(顺序存储)和链表(链式存储)
数组和链表是基础结构,其他数据结构都是基于这个基础构建的
散列表
通过散列函数将键映射到一个大数组中。
栈
先进先出
队列
先进后出
堆
用数组实现就是[堆]
树
二叉搜索树、AVL树、红黑树、区间树和B树等等。
图
数据结构的基本操作
数据结构种类很多,但他们存在的目的就是在不同场景,尽可能高效地增删改查
如何遍历+访问
线性和非线性
线性就是for/while迭代为代表,非线性就是递归为代表
数组遍历框架
void traverse(int[] arr){
for(int i=0;i<arr.length;i++){
//迭代访问arr
}
常见框架
非线性,兼具迭代和递归结构
//基本的单链表节点
class ListNode{
int val;
ListNode next;
}
void traverse(ListNode head){
for(ListNode p=head;p!=null;p=p.next){
//迭代访问p.val
}
}
void traverse(ListNode head){
//递归访问head.val
traverse(head.next);
}
二叉树遍历框架
//基本的二叉树节点
class TreeNode{
int val;
TreeNode left,right;
}
void traverse(TreeNode root){
traverse(root.left);
traverse(roo.right);
}
衍生出的N多叉树
//基本的N叉树节点
class TreeNode{
int val;
TreeNode[] children;
}
void traverse(TreeNode root){
for(TreeNode child:root.children){
traverse(child);
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。