JZ36 二叉搜索树与双向链表

二叉搜索树与双向链表

https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5?tpId=13&tqId=23253&ru=/practice/508378c0823c423baa723ce448cbfd0c&qru=/ta/coding-interviews/question-ranking

思路:
# 先中序遍历,将所有的节点保存到一个列表中。对这个list[:-1]进行遍历,
# 每个节点的right设为下一个节点,下一个节点的left设为上一个节点。
class Solution:
    def Convert(self , pRootOfTree ):
        # write code here
        if not pRootOfTree: return None
        self.arr = []
        self.midTraversal(pRootOfTree)
        for i,v in enumerate(self.arr[:-1]):
            v.right = self.arr[i+1]
            self.arr[i+1].left = v
        return self.arr[0]
    def midTraversal(self,root):
        if not root: return
        self.midTraversal(root.left)
        self.arr.append(root)
        self.midTraversal(root.right)
        


全部评论

相关推荐

8 收藏 评论
分享
牛客网
牛客企业服务