图来自——《java常用算法手册》
一、算法的实现
1.流程图表示
2.N-S图
3.伪代码表示
二、数据结构
1.数据结构的分类
1)线性
- 有且仅有一个开始节点和一个终端节点
- 所有节点最多只有一个直接前驱和直接后继节点
2)非线性
- 一个节点可能有多个直接前驱和直接后继节点
实际应用中,数组、广义表、树结构和图结构等结构都是非线性结构
2.数据结构的存储方式
1)顺序存储
2)链式存储
3)索引存储
4)散列存储
3.数据结构
1)循环队列
front指向头,rear指向队尾的下一个位置
- 队为空的推断:front==rear;队为满的推断:(rear+1)%MAXSIZE==front
- 长度 :len=(rear-front+maxsize)%maxsize
- 插入:
public boolean enqueue(Object obj){
if((rear+1)%a.length==front){
return false;
}
a[rear]=obj;
rear = (rear+1)%a.length;
return true;
}
- 删除:
public Object dequeue(){
if(rear==front){
return null;
}
Object obj = a[front];
front = (front+1)%a.length;
return obj;
}
2)二叉树
- 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1
- 在非空二叉树的第i层上,至多有2^(i-1)个节点(i>=1)
- 在深度为K的二叉树上最多有2^k-1个结点(k>=1)
先序中序后序遍历