[Leet Code] Increasing Order
2 min readFeb 25, 2021
Leetcode: https://leetcode.com/problems/increasing-order-search-tree/
Problem:
Given the root
of a binary search tree, rearrange the tree in in-order so that the leftmost node in the tree is now the root of the tree, and every node has no left child and only one right child.
Example 1:
Input: root = [5,3,6,2,4,null,8,1,null,null,null,7,9]
Output: [1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]
Example 2:
Input: root = [5,1,7]
Output: [1,null,5,null,7]
Solution:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def increasingBST(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
if root and root.left or root.right:
elements = []
self.inorder(root, elements)
answers = []
for i in range(0,len(elements)-1):
node = elements[i]
node.right = elements[i+1]
answers.append(node)
return answers[0]
else:
return root
def inorder(self, root, elements):
if root:
self.inorder(root.left, elements)
node = TreeNode()
node.val = root.val
elements.append(node)
self.inorder(root.right, elements)