为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨__羊羊 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 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信