比较器
- 应用在系统排序方法中
- 应用在与排序有关的结构中:TreeSet\TreeMap\优先级队列(堆)\有序表
优先级队列
PriorityQueue+MyComparator
二叉树
先序:头 左 右
中序:左 头 右
后序:左 右 头
递归遍历
// 先序中序后序都是递归序加工而来 // 先序打印所有节点 头 左 右 public static void pre(Node head) { if (head == null) { return; } System.out.println(head.value); pre(head.left); pre(head.right); }
// 先序打印所有节点 public static void in(Node head) { if (head == null) { return; } in(head.left); System.out.println(head.value); in(head.right); }
// 后序打印所有节点 public static void pos(Node head) { if (head == null) { return; } pos(head.left); pos(head.right); System.out.println(head.value); }
按层遍历(讲了题了)
java的栈比较慢
- (假)如果需要用到栈,可以用LinkedList从尾巴入,从尾巴出(也就是双端队列,当成单端的用)
LinkedList<Integer> s = new LinkedList<>(); s.addLast(1); s.addLast(2); s.addLast(3); while (!s.isEmpty()) { System.out.println(s.pollLast()); }
- (真)如果明确知道栈的长度不超过100,可以用数组替代
int[] sta = new int[100]; int index = 0; sta[index++] = 1; sta[index++] = 2; sta[index++] = 3; System.out.println(sta[--index]); System.out.println(sta[--index]); System.out.println(sta[--index]);
- (假)如果需要用到栈,可以用LinkedList从尾巴入,从尾巴出(也就是双端队列,当成单端的用)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以邮件至 963614756@qq.com。