# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
head = None #定义函数外变量head,用于找到最左子树节点作为链表首节点,最终函数返回值
pre = None #定义前驱临时节点,用于当前遍历节点指向前驱,随着递归不断变化
def Convert(self , pRootOfTree ):
# write code here
if not pRootOfTree:
return None
self.Convert(pRootOfTree.left) # 不断递归寻找最左叶子节点
if self.head == None: # 找到最左叶子节点
self.head = pRootOfTree # 找到后先赋值head
self.pre = pRootOfTree # 找到后前驱pre赋值,和head保持一致
else: #非最左叶子情况
self.pre.right = pRootOfTree #刷新pre的后驱为当前节点
pRootOfTree.left = self.pre #刷新当前节点的前驱为pre
self.pre = pRootOfTree #刷新前驱为当前节点为下次递归做准备
self.Convert(pRootOfTree.right)
return self.head #head会返回多次,但head值保持最左叶子