基本概念
- 根 (root)
- 叶子节点 (leaf)
- 子节点 (child)
- 节点的度 (degree)
- 树的高度 (height)
- 二叉树
完全二叉树
满二叉树 - 二叉树的性质
- 二叉搜索树 (BST)
设计与实现
节点
1 | class TreeNode { |
先序遍历
1 | // version 1 : recursion |
中序遍历
1 | // version 1 : recursion |
后序遍历
1 | // version 1 : recursion (by divide and conquer) |
Morris遍历
1 | // from: https://github.com/mission-peace/interview/blob/master/src/com/interview/tree/MorrisTraversal.java |
Java中Balanced BST的实现
- TreeSet
元素按照某种顺序被排序。
基于HashMap实现,无容量限制。
不允许元素重复。
查找与删除的时间复杂度为$O(logn)$。
1 | Set<Integer> s = new TreeSet<>(); |
- TreeMap
基于红黑树实现,无容量限制。
1 | Map<Integer, Integer> m = new TreeMap<>(); |