亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將二叉樹轉換為雙向鏈表。如何避免在這里使用全局變量?

將二叉樹轉換為雙向鏈表。如何避免在這里使用全局變量?

楊__羊羊 2023-12-09 15:49:16
轉換函數將二叉樹轉換為鏈表。由于使用全局變量,我無法通過 geeksforgeek 中的測試用例。如何避免使用全局變量? prev = None head = Nonedef convert(root):    global prev    global head    if root is None:        return     convert(root.left)    if head== None:        head = root        prev = root    else:        root.left = prev        prev.right = root    prev = root    convert(root.right)
查看完整描述

2 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

將它們作為參數傳遞,默認 = None:


def convert(root, prev = None, head = None):

    if root is None:

        return 


    convert(root.left, prev=prev, head=head)

    if head== None:

        head = root

        prev = root

    else:

        root.left = prev

        prev.right = root

    prev = root

    convert(root.right, prev=prev, head=head)


查看完整回答
反對 回復 2023-12-09
?
holdtom

TA貢獻1805條經驗 獲得超10個贊

我認為你需要返回鏈表的頭。


不管怎樣,你可以包裝你的函數來為這兩個變量創建一個閉包:


def convert(root):

    head = None

    prev = None


    def recur(cur):

        nonlocal prev, head


        if cur is None:

            return 

    

        recur(cur.left)

        if head is None:

            head = cur

        else:

            cur.left = prev

            prev.right = cur

        prev = cur

        recur(cur.right)


    recur(root)

    return head


查看完整回答
反對 回復 2023-12-09
  • 2 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號