输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
基本思想:中序遍历,递归。
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def ConvertNode(self, pCurrentNode, pLastNode):
if pCurrentNode:
if pCurrentNode.left:
self.ConvertNode(pCurrentNode.left, pLastNode)
pCurrentNode.left = pLastNode[0]
if pLastNode[0]:
pLastNode[0].right = pCurrentNode
pLastNode[0] = pCurrentNode
if pCurrentNode.right:
self.ConvertNode(pCurrentNode.right, pLastNode)
else:
return None
def Convert(self, pRootOfTree):
# write code here
pLastNode = [None]
self.ConvertNode(pRootOfTree, pLastNode)
pHeadNode = pLastNode[0]
while pHeadNode and pHeadNode.left:
pHeadNode = pHeadNode.left
return pHeadNode
本文介绍如何将二叉搜索树转换为排序的双向链表,通过中序遍历的方法实现节点间的连接,无需新建节点。文章提供了一种递归算法实现,并附带详细代码示例。
842

被折叠的 条评论
为什么被折叠?



