题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
解题思路:使用一个头指针和尾指针标记某子树形成的双向链表的头尾节点。将左子树转换成双向链表,然后将根节点与双向链表的尾节点连接,再与右子树转换成的双向链表连接即可。
参考文档:https://cuijiahua.com/blog/2017/12/basis_26.html
Python代码如下:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.head = None
self.tail = None
def Convert(self, pRootOfTree):
# write code here
if not pRootOfTree:
return None
self.Convert(pRootOfTree.left)
if not self.head:
self.head = pRootOfTree
self.tail = pRootOfTree
else:
self.tail.right = pRootOfTree
pRootOfTree.left = self.tail
self.tail = pRootOfTree
self.Convert(pRootOfTree.right)
return self.head