首頁  >  問答  >  主體

二叉树 - c++数据结构 最小生成树题目

原题:The radius of a tree is the maximum distance from the root to a leaf. Given a connected, undirected graph, write a procedure to find a spanning tree of minimum radius.
(Hint: use breadth-first search)

思路???

大家讲道理大家讲道理2765 天前604

全部回覆(3)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 13:17:17

    提示:用廣度優先演算法(基本上可以保證產生的樹有minimum radius)

    基本上就是廣度優先遍歷這張圖,然後把遍歷過的節點放到樹上,並且標記下來,下次不要再訪問遍歷過的節點。可以考慮用個鍊錶來儲存造訪過的節點。

    回覆
    0
  • 阿神

    阿神2017-04-17 13:17:17

    可以先閱讀wikipedia上關於BFS和DFS的解釋以及相關的實作。

    從根節點開始,每次找到最近的且沒有訪問過的節點。下次從所有這些節點開始,繼續重複上述過程。

    最小生成樹也可以參考MST的相關演算法,prim,kruskal(不知道有沒有拼字錯誤)。

    經典問題多看,這種相類似的問題就會迎刃而解。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 13:17:17

    BFS跑一遍不就是一個最小半徑生成樹了麼?
    使用鄰接表存圖吧.vectorg[SIZE].
    還有最小生成樹(一般指的是value最小)

    回覆
    0
  • 取消回覆