题解 | #二叉搜索树与双向链表#

二叉搜索树与双向链表

https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5

from re import L
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

#
# 
# @param pRootOfTree TreeNode类 
# @return TreeNode类
#
# 使用中序遍历,首先将所有节点保存在列表中,然后再将链表中的节点从前到后连接起来
class Solution:
    def Convert(self , pRootOfTree ):
        if not pRootOfTree:
            return None
        
        nodes = []
        def midSequence(r):
            l = []
            if r.left:
                l.extend(midSequence(r.left))
            l.append(r)
            if r.right:
                l.extend(midSequence(r.right))
            return l
        
        nodes.extend(midSequence(pRootOfTree))

        for i in range(len(nodes)-1):
            nodes[i].right = nodes[i+1]
            nodes[i+1].left = nodes[i]
        
        return nodes[0]

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务