题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
思路
我发誓,来后能用递归的,打死不用stack。递归太简单了!
思路:用一个list按照 中序遍历的顺序存放 所有的节点。然后改变他们的指针
class Solution:
# 中序遍历 - 递归方法
def midS(self,root,result):
if root.left: # 遍历左子树
self.midS(root.left,result)
result.append(root) # root
if root.right: # 遍历右子树
self.midS(root.right,result)
return result
def Convert(self, root):
if not root:
return None
nodes = self.midS(root,[])
for i in range(0,len(nodes)-1):
nodes[i].right = nodes[i+1]
nodes[i+1].left = nodes[i]
return nodes[0]