• 310. Minimum Height Trees


    package LeetCode_310
    
    import java.util.*
    import kotlin.collections.ArrayList
    
    /**
     * 310. Minimum Height Trees
     * https://leetcode.com/problems/minimum-height-trees/description/
     * */
    class Solution {
        fun findMinHeightTrees(n_: Int, edges: Array<IntArray>): List<Int> {
            var n = n_
            val result = ArrayList<Int>()
            if (n == 0) {
                return result
            }
            if (n == 1) {
                result.add(0)
                return result
            }
    
            //init and create graph
            val graph = ArrayList<ArrayList<Int>>()
            for (i in 0 until n) {
                graph.add(ArrayList())
            }
            for (edge in edges) {
                graph.get(edge[0]).add(edge[1])
                graph.get(edge[1]).add(edge[0])
            }
    
            val queue = LinkedList<Int>()
            for (i in 0 until n) {
                //add leaf node into queue
                if (graph.get(i).size == 1) {
                    queue.offer(i)
                }
            }
    
            //reduce level
            while (n > 2) {
                val size = queue.size
                n -= size
                for (i in 0 until size) {
                    val leafNode = queue.poll()//get the leaf node
                    for (node in graph[leafNode]) {//find out leaf node's connect node
                        graph.get(node).remove(leafNode)//remove the node's connection
                        if (graph.get(node).size == 1) {
                            queue.offer(node)
                        }
                    }
                }
            }
    
            while (queue.isNotEmpty()) {
                result.add(queue.poll())
            }
    
            return result
        }
    }
  • 相关阅读:
    Global Citizenship
    Eng Stu
    说说
    C#编程远程控制机械手臂
    切割系统
    C#编码 画图控件
    编程Sourceforge
    C#编程线程
    空间点的几何关系
    一台普通电脑通过设置连接到公司网络
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/12772862.html
Copyright © 2020-2023  润新知