本週學習了二叉樹相關內容,較為深刻的瞭解了dfs的整個過程和各種題目的思考方向。
基礎
二叉樹中最基礎的內容為遞迴序遍歷dfs和層序遍歷bfs,之後的各種題目都是對這兩種方式的應用
- dfs 深度優先搜尋,對於樹來說就是遞迴序遍歷,對於樹上的每個節點,訪問的時機有三個,第一次遇到,從左孩子返回(第二次遇到),從右孩子返回(第三次遇到,即將退出該節點)。也就是說,處理每個節點的時機也是這三個時機。
- bfs 廣度優先搜尋,對於樹來說是層序遍歷,透過佇列實現,每次處理一層,每層處理一個。
遞迴序應用思路
- 區域性 + 遞迴子樹
- 遍歷處理每個節點,可能要回溯
需要注意的細節
- 典型的求節點個數的問題如果用遞迴序的兩種思路
1.可用任意遞迴序遍歷,因為每種遞迴序只統計一次,所以沒有回溯的問題
2. 典型的樹形DP問題,用後序思路處理 - 路徑問題等需要回溯(顯式或隱式),以刪去子節點處理的對於接收變數(如列表)的影響,我的具體實現是離開當前節點時刪除當前節點對接收變數的影響
- 區域性變數與相對全域性變數 可變型別與非可變型別
- 遞迴函式的成員變數,函式引數與返回值