要求
给你一棵二叉搜索树,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。
示例 1:
输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]
输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]
示例 2:
输入:root = [5,1,7]
输出:[1,null,5,null,7]
核心代码
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def increasingBST(self, root: TreeNode) -> TreeNode:
preorder = list()
def pre_order(root):
if not root:
return
pre_order(root.left)
preorder.append(root.val)
pre_order(root.right)
pre_order(root)
dummp = TreeNode(0)
for i,node in enumerate(preorder):
temp = TreeNode(node)
temp.left = None
temp.right = None
if i == 0:
dummp.right = temp
cur = temp
else:
cur.right = temp
cur = temp
return dummp.right
解题思路:我们使用中序遍历得到了一个顺序的列表,接下来我们按照要求构建一个全右的树。