剑指 Offer 36. 二叉搜索树与双向链表
题目描述
解题思路
1、利用二叉搜索树BST性质中序遍历有序;
2、因为要建立双向链表,所以需要记录前驱节点
代码实现
class Solution:
def treeToDoublyList(self, root: 'Node') -> 'Node':
if not root:
return
self.pre = None
def inorder(root: 'Node') -> None:
if not root:
return
inorder(root.left)
if self.pre:
self.pre.right = root
root.left = self.pre
else:
self.head = root
self.pre = root
inorder(root.right)
inorder(root)
self.head.left = self.pre
self.pre.right = self.head
return self.head