Leetcode 559. Maximum Depth of N-ary Tree


求樹的最大深度,解這種題目可以思考要用DFS還是BFS。

DFS多半用遞迴解,BFS多半用Queue去存取adjacent node。

DFS思維是從起點出發會一直往深度去尋訪,故,深度優先搜尋:


  1.  Start Node為1
  2. 我們默認左側的child node會先被搜索到,所以3->5
  3. ->6
  4. ->2
  5. ->4
可以想像每一次找到子節點再遞迴下去孫節點,直到找到NULL。
沒找到一個子節點等同於深度加1,找到NULL就return 0。

BFS思維是從起點出發會一直往深度去尋訪,故,廣度優先搜尋:


  1. 建立一個queue,並把root node放進去,初始化depth = 0
  2. 每次會算出當所在level的廣度breadth(即第三步算出的節點數目),depth + 1
  3. Queue 是FIFO,故取q.front為當前節點,接著q.pop()把queue裡的node刪除,這邊用auto來獲取當前node
  4. 當前node的子節點,會用for ( auto child : node->children)來遍歷,並把每個節點push到queue裡面。
  5. 重複2-4直到q為空
  6. return depth

留言

這個網誌中的熱門文章

面試 (網路搜尋的資源)

bitwise operation 面試考題