题解 | #二叉搜索树与双向链表#
二叉搜索树与双向链表
https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
#
# @param pRootOfTree TreeNode类
# @return TreeNode类
#
class Solution:
def Convert_row(self, pRootOfTree:TreeNode):
if not pRootOfTree:
return None, None
# 递归拿到子串的两头,如果没有就返回None
if pRootOfTree.left:
lleft, lrignt = self.Convert_row(pRootOfTree.left)
else:
lleft, lrignt = None, None
if pRootOfTree.right:
rleft, rright = self.Convert_row(pRootOfTree.right)
else:
rleft, rright = None, None
# 左,自身,右,接上
pRootOfTree.left = lrignt
pRootOfTree.right = rleft
if lrignt:
lrignt.right = pRootOfTree
if rleft:
rleft.left = pRootOfTree
# 如果没有左头,那自身就是左头,右边同理
if lleft == None:
left = pRootOfTree
else:
left = lleft
if rright == None:
right = pRootOfTree
else:
right = rright
return left,right
def Convert(self,pRootOfTree:TreeNode):
left, right= self.Convert_row(pRootOfTree)
return left
