LeetCode 1305 All Elements in Two Binary Search Trees

tjumiao發表於2020-12-26

好久沒刷題了,好不容易閒了下來回來刷道題。我現在用的是python

題目:

Given two binary search trees root1 and root2.

Return a list containing all the integers from both trees sorted in ascending order

這道題很簡單,只需要中序遍歷就可以。我開始居然TLE了,後來發現是我遍歷的時候把值放在dict裡作為key,然後value作為出現次數,最後把值從sorted keys中放到list裡去,這樣最後一個test case過不去。後來我直接append到list中去,然後最後sort list輸出就可以了,這個時間應該就是差在最後複製到list中的時間吧,竟然就會超時。

程式碼:

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def getAllElements(self, root1, root2):
        """
        :type root1: TreeNode
        :type root2: TreeNode
        :rtype: List[int]
        """
        dict_all = {}
        result_all = []
        for test in range(2):
            if test==0:
                this_node = root1
            else:
                this_node = root2
            self.dfs(this_node, result_all)
        result_all.sort()
        return result_all
    
    def dfs(self, this_node, result_all):
        if this_node is None:
            return
        self.dfs(this_node.left, result_all)
        val = this_node.val
        result_all.append(val)
        self.dfs(this_node.right, result_all)
    

 

相關文章