题目:
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。如图:
一、知识提要:
1.什么是二叉搜索树(BST):
2.什么是双向链表:跟正常链表比 多一个头指针 尾指针
二、思路
看到二叉搜索树转换成 一个双向链表,我们可以考虑BST的中序遍历 因为BST中序遍历是有序的。但如何将他们链接在一起就是我们需要考虑的
下图附上我的解题具体步骤
class Solution:
def __init__(self):
self.listHead = None
self.listTail = None
def Convert(self, pRootOfTree):
if pRootOfTree==None:
return
self.Convert(pRootOfTree.left)
if self.listHead==None:
self.listHead = pRootOfTree
self.listTail = pRootOfTree
else:
self.listTail.right = pRootOfTree
pRootOfTree.left = self.listTail
self.listTail = pRootOfTree
self.Convert(pRootOfTree.right)
return self.listHead