![](https://i-blog.csdnimg.cn/blog_migrate/035856b2b5b210c1193c9fe8d187956e.png)
# Definition for a binary tree node.
# 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:
if not root or not root.left or not root.right:
return root
def dfs(root):
nonlocal new_root
if not root:
return
dfs(root.left)
root.left = None
new_root.right = root
new_root = root
dfs(root.right)
new_root = TreeNode(0)
temp_root = new_root
dfs(root)
return temp_root.right
def dfs(root):
nonlocal res
if not root:
return
dfs(root.left)
res.append(root.val)
dfs(root.right)
res = []
dfs(root)
temp_root = TreeNode(0)
new_root = temp_root
for node in res:
temp = TreeNode(node)
temp_root.right = temp
temp_root = temp
return new_root.right