题目难度: 简单
原题链接
今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复
剑指offer2
就能看到该系列当前连载的所有文章了, 记得关注哦~
给你一棵二叉搜索树,请 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。
class Solution:
def increasingBST(self, root: TreeNode) -> TreeNode:
# 使用哨兵节点, 作为最开始的前一节点
dummy = TreeNode()
pre = dummy
def inorder(node):
# 中序遍历
nonlocal pre
if not node:
return
inorder(node.left)
# 将当前节点的左子节点置为空, 注意不能将pre的左子节点置为空, 否则会漏掉最后一个节点
node.left = None
# 将前一节点的右子节点指向当前节点
pre.right = node
# 更新前一节点为当前节点
pre = node
inorder(node.right)
inorder(root)
return dummy.right
大家可以在下面这些地方找到我~
我的 GitHub
我的 Leetcode
我的 CSDN
我的知乎专栏
我的头条号
我的牛客网博客
我的公众号: 算法精选, 欢迎大家扫码关注~