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

二叉搜索树与双向链表

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

python3,典型的中序遍历
中序遍历,两个指针记录前驱结点和后驱结点,递归后驱结点,为空时前驱结点到达尾部(即最大/最右)。如果要求做成循环列表,额外连上首尾即可。
class Solution:
    def Convert(self , pRootOfTree ):
        def dfs(cur):
            if not cur: return
            dfs(cur.left) # 递归左子树
            if self.pre: # 修改节点引用
                self.pre.right, cur.left = cur, self.pre
            else: # 记录头节点
                self.head = cur
            self.pre = cur # 保存 cur
            dfs(cur.right) # 递归右子树
        
        if not pRootOfTree: return
        self.pre = None
        dfs(pRootOfTree)
        # 如果做成循环链表,只需把首位连上即可。首即head,尾即pre
        # self.head.left, self.pre.right = self.pre, self.head
        return self.head


全部评论

相关推荐

10-13 13:49
南京大学 财务
饿魔:笑死我了,你简直是个天才
点赞 评论 收藏
分享
09-19 12:15
门头沟学院 Java
迷茫的大四🐶:这下是真的打牌了,我可以用感谢信和佬一起打牌吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务