跳过正文
  1. 全部/
  2. 笔记/
  3. LeetCode/

建树

目录

给边,但并不知道谁是谁是父节点
#

直接建图,在遍历时传参带父节点,避免循环

func minimumFuelCost(roads [][]int) int64 {
    n := len(roads) + 1
    graph := make([][]int, n)
    for i := range graph {
        graph[i] = make([]int, 0)
    }
    for _, road := range roads {
        graph[road[0]] = append(graph[road[0]], road[1])
        graph[road[1]] = append(graph[road[1]], road[0])
    }
    _, cost := dfs(graph, 0, -1)
    return int64(cost)
}

给父节点数组parent[i] 是节点 i 的父节点
#

func longestPath(parent []int, s string) int {
    n := len(parent)
    graph := make([][]int, n)
    for i := range graph {
        graph[i] = make([]int, 0)
    }
    for i := 1; i < n; i++ {
        graph[parent[i]] = append(graph[parent[i]], i)
    }
    dfs(graph, []byte(s))
}
Reply by Email