# 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值保持最左叶子