樹、二叉樹、二叉搜索樹、遞歸
LinkedList 是特殊化的 Tree
Tree 是特殊化的 Graph
二叉樹遍歷 Pre-order/In-order/Post-order
- 前序 (Pre-order): 根-左-右
- 中序 (In-order): 左-根-右
- 後序 (Post-order): 左-右-根
二叉搜索樹 (Binary Search Tree) O(log n)
- 二叉排序樹、有序二叉樹 (Ordered Binary Tree)、排序二叉樹 (Sorted Binary Tree)
- 空樹or二叉樹符合
1. 左子樹所有結點的值 < 根結點的值
2. 右子樹所有結點的值 > 根結點的值
3. 以此類推:左、右子樹也分別為二叉查找樹(這就是重複性!!!)
中序遍歷:升序排列
Python代碼模板
def recursion(level, param1, param2, ...):
# recursion terminator 遞歸終結條件
if level > MAX_LEVEL:
# process_result
return
# process logic in current level 處理當前層邏輯
process(level, data ...)
# drill down 下探到下一層
self.recursion(level+1, p1, ...)
# reverse the current level status if needed 清理當前層
Java代碼模板
public void recursion(int level, int param) {
// recursion terminator 遞歸終結條件
if(level > MAX_LEVEL) {
// process_result
return;
}
// process logic in current level 處理當前層邏輯
process(level, param);
// drill down 下探到下一層
recursion(level:level+1, newParam);
// reverse the current level status if needed 清理當前層
}
- 抵制人肉遞歸
- 找最近重複性
- 數學歸納法思維