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

二叉搜索树与双向链表

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

提供一个有趣的思路,可能复杂了一点:
# 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 ):
        # write code here
        # 如果为空直接返回;
        if not pRootOfTree:
            return None
        def dfs(cur):
            # 如果是叶子节点直接返回
            if not cur.left and not cur.right:
                return
            # 如果当前的左节点节点不为空
            if cur.left:
                # 递归左节点
                dfs(cur.left)
                # 将当前节点的左指针指向左链表右节点
                while cur.left.right:
                    cur.left = cur.left.right
                # 将左链表右节点的右指针指向当前节点
                cur.left.right = cur
            # 如果当前的右节点节点不为空
            if cur.right:
                # 递归右节点
                dfs(cur.right)
                # 将当前节点的右指针指向右链表左节点
                while cur.right.left:
                    cur.right = cur.right.left
                # 将右链表左节点的左指针指向当前节点
                cur.right.left = cur
        dfs(pRootOfTree)
        # 将头指针指向头节点
        while pRootOfTree.left:
            pRootOfTree = pRootOfTree.left
        return pRootOfTree
思路在注释里,就不在这里解释了。

全部评论

相关推荐

找个工作 学历是要卡的 要求是高的 技能不足是真的 实习经验是0的 简历无处可写是事实的 钱不好赚是真的 想躺平又不敢躺 也不甘心躺 怕自己的灵感和才华被掩埋甚至从未被自己发现 又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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