标签:pytho als def turn https blog 搜索 fir node
题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
解题思路:
根据中序遍历的非递归实现完成。、
对于任一结点P,
1)若其左孩子不为空,则将P入栈并将P的左孩子置为当前的P,然后对当前结点P再进行相同的处理;
2)若其左孩子为空,则取栈顶元素并进行出栈操作,访问该栈顶结点,然后将当前的P置为栈顶结点的右孩子;
3)直到P为NULL并且栈为空则遍历结束。
python solution:
# -*- coding:utf-8 -*-
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def Convert(self, pRootOfTree):
if pRootOfTree is None:
return None
stack = []
p = pRootOfTree
pre = None
isfirst = True
while p or len(stack):
while p:
stack.append(p)
p = p.left
p = stack.pop(-1)
if isfirst:
root = p
pre = root
isfirst = False
else:
pre.right = p
p.left = pre
pre = p
p = p.right
return root
参考:https://www.cnblogs.com/SHERO-Vae/p/5800363.html
标签:pytho als def turn https blog 搜索 fir node
原文地址:https://www.cnblogs.com/bernieloveslife/p/10426570.html