以下の内容はhttps://blog.pco2699.net/entry/2020/05/20/230239より取得しました。


LeetCode: Kth Smallest Element in a BSTを解く

問題

May Leetcoding Challange Complementの21日目です。 5月も下旬。早い。

leetcode.com

BSTのトラバースする問題です。

解き方

解き方は極めてシンプルで、BSTをDFS - Inorderでなめていき、Arrayに詰めてアクセスすればOK。

木のInorder、Preorder、Postorderについてはこの記事がわかりやすい。

www.geeksforgeeks.org

回答

class Solution:
    def kthSmallest(self, root: TreeNode, k: int) -> int:
        res = []
        def dfs(root: TreeNode):
            if not root:
                return
            
            dfs(root.left)
            res.append(root.val)
            dfs(root.right)
        dfs(root)
        return res[k-1]

公式回答がエレガントでした。

class Solution:
    def kthSmallest(self, root, k):
        """
        :type root: TreeNode
        :type k: int
        :rtype: int
        """
        def inorder(r):
            return inorder(r.left) + [r.val] + inorder(r.right) if r else []
    
        return inorder(root)[k - 1]

計算量

時間計算量: O(N)
空間計算量: O(N)




以上の内容はhttps://blog.pco2699.net/entry/2020/05/20/230239より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14