M-230. Kth Smallest Element in a BST
# 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
# O(N), O(N)
# 直接中序遍历排序,找k(下面写错了,不应该是preorder)
class Solution:
def kthSmallest(self, root: TreeNode, k: int) -> int:
def preorder(root, res):
if root!=None:
preorder(root.left, res)
res.append(root.val)
preorder(root.right, res)
res = []
preorder(root, res)
return res[k-1]
# 如果insert/delete很频繁,即经常修改树,那么可以拿一个deque来存对应的
# treenode, 这样添加或者删除节点也只是O(H),查找k也只是O(k).
from collections import deque
class Solution:
def kthSmallest(self, root: TreeNode, k: int) -> int:
def preorder(root, res):
if root!=None:
preorder(root.left, res)
res.append(root)
preorder(root.right, res)
res = deque([])
preorder(root, res)
return res[k-1].val
Last updated
Was this helpful?