タイトル説明
問題解決のアイデア
- まず、通過したすべての要素を格納するコレクションを作成します。
- DFSを使用してバイナリツリーをトラバースし、結果をコレクションに格納します。
- コレクションを配列に変換する
- 並べ替え方法で降順で並べ替える
- ソートされた配列の添え字[k-1]を持つ要素は、二分探索木のK番目に大きい要素です。
実装コード
var kthLargest = function(root, k) {
const set = new Set();
const dfs = function(node) {
if (node === null) {
return;
}
set.add(node.val);
dfs(node.left);
dfs(node.right);
}
dfs(root);
const arr = [...set];
arr.sort((a,b) => {
return b-a;
});
return arr[k-1];
};