题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
题目思路
借助一个数组,利用中序遍历遍历,将遍历的元素存放到数组中,这时数组中的元素已经是按照升序排好序的,只需链接左右指针即可.
python:
class Solution:
def __init__(self):
self.arr = []
def Convert(self, pRootOfTree):
if pRootOfTree is None:
return None
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 root is None:
return None
self.midTraversal(root.left)
self.arr.append(root)
self.midTraversal(root.right)