题目
牛客网题目传送门
思路
对二叉搜索树进行中序遍历,结果就是按序数组。因此想办法把前面遍历过的节点给记下来,记作pre
。当遍历到某个节点node
的时候,令前驱指向pre
,然后让pre
的后驱指向node
。
代码
class TreeNode:def __init__(self, x):self.val = xself.left = None # 前驱self.right = None # 后驱
class Solution:def __init__(self):self.pre = TreeNode(-1)self.first = TreeNode(-1)def Traverse(self, root):if root == None:returnself.Traverse(root.left)root.left = self.preself.pre.right = rootself.pre = rootself.Traverse(root.right)returndef Convert(self, pRootOfTree):if pRootOfTree == None:return pRootOfTree# 找到最左边的节点def findLeft(root):node = rootwhile node.left is not None:node = node.leftreturn nodeself.first = findLeft(pRootOfTree)# 中序遍历self.Traverse(pRootOfTree)self.first.left = None //把头结点的前驱置为Nonereturn self.first
芜湖,明天要去玩了,顺便把明天的卡也做了。经前综合征在我26岁的时候,爆发到了极值。绝了。怎么感觉除了经期,其他时期也稍微就正常一点,经常忘事,和导师吐槽了一下自己的记忆力,然后导师安慰我说:这是正常~ 本科期间丢了7张校卡,总是忘记哈哈哈,短期记忆是真的不行。(谢谢导师,导师对我真的好包容)。当然,记忆力这是可以锻炼的,或者拿本本记下来。off course,当忘记事情的时候,也不要过于责怪自己。