Skip to content

230908 Binary Tree to BST

【题意】:将二叉树转换搜索二叉树

【Excepted】:

  • Time Complexity: O(NLogN).
  • Auxiliary Space: O(N).

真的没想到,自从定了 40 分钟内结束后,已经连续三道简单题都做不出来了,有点怀疑人生了……

这道题我连题意都理解错了,题意只要求是 BST,但我却以为是 AVL……

Solution

py
'''
# Tree Node
class Node:
    def __init__(self, val):
        self.right = None
        self.data = val
        self.left = None
'''

class Solution:
    def binaryTreeToBST(self, root):
        inorder_values = []
        def getAll(node):
            if not node:
                return
            inorder_values.append(node.data)
            getAll(node.left)
            getAll(node.right)
        getAll(root)
        inorder_values.sort()

        def fill_inorder_data(node):
            if not node:
                return
            fill_inorder_data(node.left)
            node.data = inorder_values.pop(0)
            fill_inorder_data(node.right)
        fill_inorder_data(root)
        return root