文章優先發表自原創博客
http://www.xdx97.com/#/single?bid=fc43fc9c-17b2-ba69-bfda-0c8d8acad0fc
胡扯 : 最近開始做算法題,遇到了一個瓶頸。就是 DFS(深度優先遍歷),BFS(廣度優先遍歷)。這塊簡單來說
就是我啥也不會,之前在數據結構這門課上老師講過,但是沒有好好聽,遇到了幾個題全部都寫不出來,看答案還有點
吃力。下決心刷一個星期的DFS和BFS。
先來看這個入門級題目:N叉樹的最大深度
先直接給出一個比較簡單的答案
class Solution {
public static int dfs(Node root){
int aa = 0;
if (root.children != null){
for(Node node : root.children){
aa = Math.max(aa,dfs(node));
}
}
return aa+1;
}
public int maxDepth(Node root) {
if(root == null)
return 0;
return dfs(root);
}
}
如果理解起來有點吃力,可以去創建一個只有三個節點的樹來進行debug查看。
這裏有一點想吐槽,leetcode 不允許使用 全局變量,有時候會導致很多麻煩。我上面這個題如果使用全局變量我想我
會更快的解決。但是可能最後算法沒有這樣寫優化來的好。