Skip to main content

Increasing Order Search Tree

897. Increasing Order Search Tree

Output (as a BT) = [1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right

def __repr__(self) -> str:
return str(self.val)

class Solution:
def increasingBST(self, root):
if root and not root.left and not root.right:
return root

values = []
current = [root]
while current:
next = []

for node in current:
if node:
values.append(node.val)

if node.left:
next.append(node.left)

if node.right:
next.append(node.right)

current = next

values.sort()
dummy = head = TreeNode(-1)

for val in values:
head.right = TreeNode(val)
head = head.right

return dummy.right

root = TreeNode(5, TreeNode(3, TreeNode(2, TreeNode(1)), TreeNode(4)), TreeNode(6, TreeNode(8, TreeNode(7), TreeNode(9))))

p1 = Solution()
print(p1.increasingBST(root))