[Leetcode] 0230. BST の K 番目に小さい要素

Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク

中くらい


与えられた  二分探索木と整数 k、 戻る  k番目 最小値(1インデックス)ツリー内のノードのすべての値.

 

例 1:

入力: ルート = [3,1,4,null,2]、k = 1
出力: 1

例 2:

入力: ルート = [5,3,6,2,4,null,null,1]、k = 3
出力: 3

 

制約:

  • ツリー内のノードの数は n.
  • 1 <= k <= n <= 10 4
  • 0 <= ノード値 <= 10 4

 

フォローアップ: BST が頻繁に変更され (つまり、挿入および削除操作を実行できる)、k 番目に小さいものを頻繁に見つける必要がある場合、どのように最適化しますか?

パイソン

				
					# バイナリ ツリー ノードの定義。入力から、List、Optional をインポートします。クラス TreeNode: def __init__(self、val=0、left=None、right=None): self.val = val self.left = left self.right = right クラス 解決策: def addToArr(self、node: Optional[TreeNode]、treeList: List[int]) -> None: if node: self.addToArr(node.left、treeList) treeList.append(node.val) self.addToArr(node.right、treeList) def kthSmallest(self、root: Optional[TreeNode]、k: int) -> int: result = [] self.addToArr(root、result) return result[k-1]
				
			
ja日本語