二叉搜索树与双向链表

"""
# Definition for a Node.
class Node:
    def __init__(self, val, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
"""
class Solution:
    def treeToDoublyList(self, root: 'Node') -> 'Node':
        # 二叉搜索树,左跟右中序排序的话就是有序的
        if not root:
            return 
        self.head = None
        self.tail = None
        def convert(cur):
            if cur is None: return
            convert(cur.left)
            if self.tail is None:
                self.head = cur
            else:
                self.tail.right = cur
                cur.left = self.tail
            self.tail = cur
            convert(cur.right)
        
        convert(root)
        self.head.left = self.tail
        self.tail.right = self.head
        return self.head
posted @ 2021-03-07 22:46  KbMan  阅读(41)  评论(0编辑  收藏  举报