将二叉树转换为双向链表。如何避免在这里使用全局变量?

转换函数将二叉树转换为链表。由于使用全局变量,我无法通过 geeksforgeek 中的测试用例。如何避免使用全局变量?


 prev = None

 head = None


def 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)


杨__羊羊
浏览 101回答 2
2回答

德玛西亚99

将它们作为参数传递,默认 = 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)

holdtom

我认为你需要返回链表的头。不管怎样,你可以包装你的函数来为这两个变量创建一个闭包: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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python