题目:
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
思路一:
递归中序遍历
代码:
class Solution:
def Convert(self, pRootOfTree):
if not pRootOfTree:
return None
lst = []
def traversal(root):
if not root:
return None
traversal(root.left)
lst.append(root)
traversal(root.right)
traversal(pRootOfTree)
for i in range(len(lst)-1):
lst[i].right = lst[i+1]
lst[i+1].left = lst[i]
return lst[0]
思路二:
改进递归,减少空间复杂度*
代码:
class Solution:
def Convert(self, pRootOfTree):
if not pRootOfTree:
return None
def traversal(root):
if not root:
return None
traversal(root.left)
global pre, head
if pre:
pre.right = root
root.left = pre
else:
head = root
pre = root
traversal(root.right)
pre = None
traversal(pRootOfTree)
return head