這個題目利用二叉搜索樹的性質,一下子就簡單得令人髮指了,第k小的元素,正好就是對二叉搜索樹進行中序遍歷時的第k個元素,因此我們直接使用中序遍歷,時間複雜度O(n),即可得到答案,代碼如下:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def kthSmallest(self, root: Optional[TreeNode], k: int) -> int: ls=[] def DFS(root,ls): if root==None: return DFS(root.left,ls) ls.append(root.val) DFS(root.right,ls) DFS(root,ls) return ls[k-1]
得解!