1
私はBSTを使用しています。キーが与えられたら、後継キーはどうやって見つけられますか?これはこれまでのコードです。私は新しいキーを挿入し、キーを与えられた値を取得することができました。今、私は次の方法を終了する必要があります。どのように私はこれにアプローチするのですか?BST:キーを指定した後継キーの検索方法
class BST<K extends Comparable<K>, V> implements RangeMap<K,V> {
class Node {
Node left;
Node right;
Node parent;
KVPair<K,V> kv;
K key;
V value;
public Node(K key, V value) {
this.key = key;
this.value = value;
parent = left = right = sentinel;
}
}
private Node root;
public void add(K key, V value) {
// TODO: Implement me(basic score)
root = add (root, key, value);
}
private Node add(Node x, K key, V value){
if (x == null){
return new Node(key, value); }
int cmp = key.compareTo(x.key);
if (cmp < 0){
x.left = add(x.left, key, value);}
else if (cmp > 0){
x.right = add(x.right, key, value);}
else if (cmp == 0){
x.value = value;}
return x;
}
public V get(K key) {
Node x = root;
while (x != null){
int cmp = key.compareTo(x.key);
if (cmp < 0){
x = x.left;}
else if (cmp > 0){
x = x.right;}
else if (cmp == 0){
return x.value;}
}
return null;
}
public K next(K key) {
これは愚かな質問ですが、シンボルの親を見つけることができないと言われています。 Nodeコンストラクタでそれを追加できますか?もしそうなら、どうですか?これまでのところ、公開ノード(Kキー、V値){ this.key = key; this.value = value; – amelia
親が見つからないと言う "それ"は何ですか?このコードがどこにあるのか。 next()メソッドはBSTクラスの一部です... ...そして内部クラスNodeには親フィールドが定義されていますので、next()メソッドは親フィールドにアクセスできるはずです – abhaybhatia
コードを表示してください – abhaybhatia