iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0

上集解答

import java.util.Queue
import java.util.LinkedList

fun main(){
    var q: Queue<String> = LinkedList<String>()
    var n = readln().toInt()
    for(i in 1..n){
        var inp = readln().split(" ")
        if(inp[0]=="1"){
            q.add(inp[1])
        }
        else if(inp[0]=="2"){
            if(q.isEmpty()){
                println("-1")
            }
            else{
                println("${q.peek()}")
            }
        }
        else if(inp[0]=="3"){
            if(q.isEmpty()==false){
                q.remove()
            }
        }
    }
}

Tree

今天是資結的最後一天,我們來學一個非常經典也常用的資結——樹Tree。

樹的資料是這樣存的,我們有很多個節點,除了一個特殊節點我們叫它根root,其他節點都會有自己的父節點,也有可能有自己的子節點,比如下圖。

tree_0.webp

比如這張圖中,資料存1的這個節點就是root,2跟3是他的子節點。(圖片是從這裡偷的,希望沒有侵權。)

不過Kotlin是沒有Tree可以用的,所以我們來手刻吧。

import java.util.LinkedList

class Node{
    var data:Int = 0
    var son:LinkedList<Node> = LinkedList<Node>()
    fun addSon(new_son_data:Int){
        var new_son = Node()
        new_son.data = new_son_data
        son.add(new_son)
    }
}

class Tree{
    var root = Node()
}

那我們要存上面那張圖就可以這樣做。

fun main(){
    var tree = Tree()
    tree.root.data = 1
    tree.root.addSon(2)
    tree.root.addSon(3)
    tree.root.son[0].addSon(4)
    tree.root.son[0].addSon(5)
    tree.root.son[0].son[1].addSon(6)
    tree.root.son[0].son[1].addSon(7)
    tree.root.son[0].son[1].addSon(8)
}

今天沒有練習題,自己嘗試實作一顆樹就好。


上一篇
[Day19][資結]LinkedList 與 Queue
下一篇
[Day21] [演算法]什麼是演算法?
系列文
櫛風風的「完全不會寫程式,從零開始的 Kotlin 教學」30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言