897.Increasing Order Search Tree

Given a 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 1 right child.

Example 1:
Input: [5,3,6,2,4,null,8,1,null,null,null,7,9]

       5
      / 
    3    6
   /     
  2   4    8
 /        /  
1        7   9

Output: [1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]

 1
  
   2
    
     3
      
       4
        
         5
          
           6
            
             7
              
               8
                
                 9  

Note:

  1. The number of nodes in the given tree will be between 1 and 100.
  2. Each node will have a unique integer value from 0 to 1000.
# Definition for a binary tree node.
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution:
    def increasingBST(self, root):
        """
        :type root: TreeNode
        :rtype: TreeNode
        """
        l = []
        if root is None:
            return None
        def inorder(root):
            if root==None:
                return
            if root.left:
                inorder(root.left)
            l.append(root.val)
            if root.right:
                inorder(root.right)
        inorder(root = root)
        newtree = TreeNode(l[0])
        build = newtree
        for i in l[1:]:
            build.right = TreeNode(i)
            build = build.right
        return newtree
原文地址:https://www.cnblogs.com/bernieloveslife/p/9756319.html