We love coding - #3

更新於 2023/03/08閱讀時間約 4 分鐘
Hi, I'm coding dog!
Q: 給定一個二元樹的根節點,請實現一個函數 serialize(root),將該樹序列化為一個字符串,以及函數 deserialize(s),將該字符串反序列化回一棵二元樹。
例如,給定以下節點類別:
class Node:
    def __init__(self, val, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
以下測試應該通過:
node = Node("root", Node("left", Node("left.left")), Node("right"))
assert deserialize(serialize(node)).left.left.val == "left.left"

A: 序列化的過程可以通過對樹進行先序遍歷來實現,並將每個節點表示為一個字符串,其格式為 "val,left_subtree,right_subtree"。我們可以使用一個特殊字符 "#" 來表示空節點。例如,上面的樹可以序列化為字符串 "root,left,left.left,#,#,#,right,#,#"。
反序列化的過程可以通過遞歸來實現。我們首先將輸入字符串拆分為一個節點值列表,然後使用第一個值創建一個新節點,並使用其餘值遞歸構建其左右子樹。為了跟蹤輸入列表中的當前位置,我們可以使用一個指針在遞歸中傳遞。
以下是 serializedeserialize 函數的實現:
class Node:
    def __init__(self, val, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
def serialize(root):
    if not root:
        return "#"
    left_serialized = serialize(root.left)
    right_serialized = serialize(root.right)
    return f"{root.val},{left_serialized},{right_serialized}"
def deserialize_helper(nodes):
    if nodes[0] == "#":
        nodes.pop(0)
        return None
    val = nodes.pop(0)
    node = Node(val)
    node.left = deserialize_helper(nodes)
    node.right = deserialize_helper(nodes)
    return node
def deserialize(s):
    nodes = s.split(",")
    root = deserialize_helper(nodes)
    return root
我們可以使用提供的示例進行測試:
node = Node("root", Node("left", Node("left.left")), Node("right"))
assert deserialize(serialize(node)).left.left.val == "left.left"
這個測試應該通過。
avatar-img
1會員
4內容數
Solve a coding interview problem everyday.
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
『We still the kids we used to be.』這是最讓我感動/傷的一句。是啊,我們依舊是從前那樣的孩子,那樣直率、衝動卻也格外單純的孩子,那些容易受傷,卻也格外真實的孩子。而那些奇妙時候,需要你我一起來守候。
2024年5月28日,是台灣民主憲政史上最黑暗的一天。 國民黨、民眾黨立委無視人民怒吼,聯手在立法院內強行三讀通過國會擴權法案。使自己成為摧毀台灣民主憲政體制的歷史罪人。 在台灣民主面對最黑暗的時刻,我們必須高喊:「捍衛民主憲政,我們決不投降!捍衛自由人權,我們永不放棄!」
Thumbnail
她們有時很率性,她們有時也很脆弱。Goro的編曲,Wyman的文字,恰似是COLLAR的強心針,更是一種催化劑,讓這七位女生之間的凝聚力,大得連拖拉機也拉不開。
Thumbnail
[Verse 1] I didn't think you'd understand me 我沒想到你會理解我 How could you ever even try? 你怎麼會試著理解呢? I don't wanna tiptoe but I don't wanna hide 我不想偷偷
Thumbnail
but we love butter 餅乾取了個特別的名字,感覺產品就是奶油香氣濃郁,或者是用了高級的奶油。這個是小Q表姐買的帶來,我看到時就剩2塊,隔天早餐吃。 ♡♡♡♡♡♡♡♡ 巧克力夾心 尺寸:六入 材料:法國艾許奶油、嘉義洲南日曬鹽、 單一產區莊園巧克力 (蛋奶素) ♡♡♡♡♡♡♡♡ 他的
Thumbnail
改編自小說《西蒙和他的出櫃日記》,《親愛的初戀》作為首部由好萊塢六巨頭公司製片、面向北美主流市場的同志青春愛情電影,以「出櫃」及「初戀」母題貫穿全片,聚焦在未出櫃的高中生 Simon(Nick Robinson 飾)從一次次危機與選擇中尋找自我的旅程。
Thumbnail
為了蛋糕,一切皆可拋。
Thumbnail
繼上回台灣BL劇再一發:《We Best Love》之第一季《永遠的第一名》! 剛播完的《第二名的逆襲》總算要來分享~!專門影片也來囉,快點進來看! 而上篇該介紹都介紹(也有專門影片分享),本篇因樺姐個人私心,所以將著重在守真CP大小事,如果你也有興趣,歡迎繼續看下去!
Thumbnail
在這變動頗大、疫情結束遙遙無期、低薪又沉悶的時代,這樣淺顯易懂、看了無負擔、甜甜蜜蜜之劇情,確實會暫時忘掉自己身邊的一大堆鳥事,只是沉醉在兩位帥哥的愛情當中。而看完後,又可以更有動力繼續來面對現實,相信這只有同為腐女/腐男的我們,能夠體會箇中心情呀~~~
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
『We still the kids we used to be.』這是最讓我感動/傷的一句。是啊,我們依舊是從前那樣的孩子,那樣直率、衝動卻也格外單純的孩子,那些容易受傷,卻也格外真實的孩子。而那些奇妙時候,需要你我一起來守候。
2024年5月28日,是台灣民主憲政史上最黑暗的一天。 國民黨、民眾黨立委無視人民怒吼,聯手在立法院內強行三讀通過國會擴權法案。使自己成為摧毀台灣民主憲政體制的歷史罪人。 在台灣民主面對最黑暗的時刻,我們必須高喊:「捍衛民主憲政,我們決不投降!捍衛自由人權,我們永不放棄!」
Thumbnail
她們有時很率性,她們有時也很脆弱。Goro的編曲,Wyman的文字,恰似是COLLAR的強心針,更是一種催化劑,讓這七位女生之間的凝聚力,大得連拖拉機也拉不開。
Thumbnail
[Verse 1] I didn't think you'd understand me 我沒想到你會理解我 How could you ever even try? 你怎麼會試著理解呢? I don't wanna tiptoe but I don't wanna hide 我不想偷偷
Thumbnail
but we love butter 餅乾取了個特別的名字,感覺產品就是奶油香氣濃郁,或者是用了高級的奶油。這個是小Q表姐買的帶來,我看到時就剩2塊,隔天早餐吃。 ♡♡♡♡♡♡♡♡ 巧克力夾心 尺寸:六入 材料:法國艾許奶油、嘉義洲南日曬鹽、 單一產區莊園巧克力 (蛋奶素) ♡♡♡♡♡♡♡♡ 他的
Thumbnail
改編自小說《西蒙和他的出櫃日記》,《親愛的初戀》作為首部由好萊塢六巨頭公司製片、面向北美主流市場的同志青春愛情電影,以「出櫃」及「初戀」母題貫穿全片,聚焦在未出櫃的高中生 Simon(Nick Robinson 飾)從一次次危機與選擇中尋找自我的旅程。
Thumbnail
為了蛋糕,一切皆可拋。
Thumbnail
繼上回台灣BL劇再一發:《We Best Love》之第一季《永遠的第一名》! 剛播完的《第二名的逆襲》總算要來分享~!專門影片也來囉,快點進來看! 而上篇該介紹都介紹(也有專門影片分享),本篇因樺姐個人私心,所以將著重在守真CP大小事,如果你也有興趣,歡迎繼續看下去!
Thumbnail
在這變動頗大、疫情結束遙遙無期、低薪又沉悶的時代,這樣淺顯易懂、看了無負擔、甜甜蜜蜜之劇情,確實會暫時忘掉自己身邊的一大堆鳥事,只是沉醉在兩位帥哥的愛情當中。而看完後,又可以更有動力繼續來面對現實,相信這只有同為腐女/腐男的我們,能夠體會箇中心情呀~~~