知识点:链表、树
题目描述:
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
思路:
二叉搜索树特点:左子树<根节点<右子树
对二叉搜索树的左子树中序遍历,遍历到根节点,此时是排序的;然再中序遍历右子树,将根节点与右子树最小的节点连接,就实现了。
题解:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.listHead=None
self.listTail=None
def Convert(self, pRootOfTree):
# write code here
if pRootOfTree==None:
return
self.Convert(pRootOfTree.left)
if self.listHead==None:
self.listHead=pRootOfTree
self.listTail=pRootOfTree
else:
self.listTail.right=pRootOfTree
pRootOfTree.left=self.listTail
self.listTail=pRootOfTree
self.Convert(pRootOfTree.right)
return self.listHead
参考链接:
https://blog.csdn.net/qq_36936730/article/details/104668385