[LeetCode]#897. Increasing Order Search Tree

Environment: Python 3.8

Key technique: TreeNode, function

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]

Analysis:

  1. Refer to the below link for using binarytree module.

2. Search treeNode left side util no value.

3. Add it to new tree and search this value right.

Solution:

class Solution:
def increasingBST(self, root):
arr = []

def inorder(root):

if not root:
return []
inorder(root.left)
arr.append(root.val)
inorder(root.right)
inorder(root)

new_root = TreeNode(arr[0])
temp = new_root
for i in range(1,len(arr)):
temp.right = TreeNode(arr[i])
temp = temp.right
return new_root

Submissions:

Reference:

https://leetcode.com/problems/increasing-order-search-tree/discuss/983084/Python3%3A-inroder-traversal-%2B-List-data-structure