學習算法的數據結構基礎

數據結構的存儲方式:數組(順序存儲)和鏈表(鏈式存儲)

數組和鏈表是基礎結構,其餘數據結構都是基於這個基礎構建的數組

散列表

經過散列函數將鍵映射到一個大數組中。數據結構

先進先出框架

隊列

先進後出函數

用數組實現就是[堆]code

二叉搜索樹、AVL樹、紅黑樹、區間樹和B樹等等。遞歸

數據結構的基本操做

數據結構種類不少,但他們存在的目的就是在不一樣場景,儘量高效地增刪改查
如何遍歷+訪問
線性和非線性隊列

線性就是for/while迭代爲表明,非線性就是遞歸爲表明

數組遍歷框架class

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);
}

二叉樹遍歷框架List

//基本的二叉樹節點
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);
}
}