一、基本作用
增删改查
通过数据结构的遍历、访问,对数据尽可能高效地进行增删改查
操作分类
线性形式
- 迭代
非线性形式
- 递归
二、主要框架
数组遍历框架——线性迭代
for/while迭代循环
void traverse(int[] arr){
for(int i = 0; i < n; i++){
... // 迭代放访问arr[i]
}
}
链表遍历框架——迭代与递归
链表迭代
void traverse(ListNode head){
for(ListNode p = head; p != null; p = p.next){
... // 迭代访问p.val
}
}
链表递归
void traverse(ListNode head){
traverse(head.next); // 递归访问head.val
}
二叉树遍历框架——非线性递归
二叉树左右节点遍历
class TreeNode{
int val;
TreeNode left, right;
}
void traverse(TreeNode root){
traverse(root.left);
traverse(root.right);
}
二叉树可扩展成N叉树,N叉树可扩展成图
class TreeNode{
int val;
TreeNode[] children;
}
void traverse(TreeNode root){
for(TreeNode child : root.children){
traverse(child);
}
}
总结
所谓框架——即为套路,根据具体问题在框架下添加代码