Свести бинарное дерево в связанный список в линейной сложности - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь решить этот вопрос

Учитывая двоичное дерево, свести его к связанному списку на месте.

Мое рабочее решение:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None


def append(node, x):
    prev = None 
    while node:
        prev = node 
        node = node.right
    prev.right =x 
    return prev 


def inorder(node):
    if node is None:
        return None 
    left = inorder(node.left)
    right = inorder(node.right)
    node.left= None
    node.right = left 
    if node.right:
        append(node.right, right)
    else:
        node.right = right 
    return node 

class Solution:
    def flatten(self, root: TreeNode) -> None:
        inorder(root)

У меня два вопроса

(1) Какова его временная сложность в худшем случае? Я думаю, что это n ^ 2, но я не уверен.

(2) Как мне оптимизировать это решение с точки зрения сложности времени?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...