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

二叉搜索树与双向链表

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

class Solution:
    pre = None
    head = None
    def Convert(self , pRootOfTree ):  # 递归不过是程序的一种循环方式,免去了无限if..else..的烦恼
        if not pRootOfTree:            # 如果遇到递归,程序会一直将递归执行完才执行下一步,执行不完就卡在这一步一直执行
            return None
        self.Convert(pRootOfTree.left) # 此处递归左子节点,直到左子节点为空则返回空,再回到上一层递归执行下一步操作
        if not self.pre:               # 回来以后发现pre和head依然为空,则将倒数第二层递归的pRootOfTree赋值给它们,再回到上一层递归
            self.pre = pRootOfTree     
            self.head = pRootOfTree
        else:                          # 回来以后发现pre不为空,然后将pre的right指向倒数第三层递归里的pRootOfTree          
            self.pre.right = pRootOfTree  #并将当前层的pRootOfTree的left指向pre
            pRootOfTree.left = self.pre 
            self.pre = pRootOfTree     # 然后将当前层的pRootOfTree设置为pre,供上层递归使用
        self.Convert(pRootOfTree.right)# 此处递归右子节点,如果没有则返回None,否则将执行前面的步骤
        return self.head    

全部评论

相关推荐

06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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