输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#利用根结点与左子树右子树之间的联系,将其连接起来
class Solution:
def Convert(self, pRootOfTree):
# write code here
if not pRootOfTree:
return;
if not pRootOfTree.left and not pRootOfTree.right:
return pRootOfTree
self.Convert(pRootOfTree.left)
left=pRootOfTree.left
if left:
while left.right:
left=left.right
pRootOfTree.left , left.right=left , pRootOfTree
self.Convert(pRootOfTree.right)
right=pRootOfTree.right
if right:
while right.left:
right=right.left
pRootOfTree.right, right.left=right, pRootOfTree
pHead=pRootOfTree
if pRootOfTree:
while pHead.left:
pHead=pHead.left
return pHead