LeetCode刷题框架总结
01 | 数组和链表遍历框架
1、数组遍历框架,典型的线性迭代结构
void traverse(int[] arr) {
for (int i = 0; i < arr.length; i++) {
//迭代访问 arr[i]
}
}
2、链表遍历框架,兼具迭代和递归结构
/*基本的单链表节点*/
class ListNode {
int val;
ListNode next;
}
/*迭代访问*/
void traverse(ListNode head) {
for (ListNode p = head; p != null; p = p.next) {
//迭代访问 p.val
}
}
/*递归访问*/
void traverse1(ListNode head) {
//递归访问 head.val
traverse1(head.next);
}
02 | 二叉树遍历框架
1、二叉树遍历框架,典型的非线性递归遍历结构
/*基本的二叉树节点*/
class TreeNode {
public int val;
public TreeNode left, right;
public TreeNode(int val) {
this.val = val;
this.left = null;
this.right = null;
}
}
/*二叉树前序、中序、后序遍历*/
void traverse(TreeNode root) {
//前序遍历
traverse(root.left);
//中序遍历
traverse(