樹、二叉樹、二叉搜索樹、遞歸

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. 以此類推:左、右子樹也分別為二叉查找樹(這就是重複性!!!)

中序遍歷:升序排列

VisuAlgo.net/en

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      清理當前層
}
  • 抵制人肉遞歸
  • 找最近重複性
  • 數學歸納法思維
posted @ 2020-10-27 14:58  Ying‘s  阅读(19)  评论(0编辑  收藏  举报